Heim > Java > javaLernprogramm > Hauptteil

Hier sind einige fragenbasierte Titel, die den Kern des Artikels zusammenfassen: * Wie übergebe ich Werte zwischen JFrames und JDialogs in Java Swing? * Abrufen von Daten aus untergeordneten Fenstern: JFrames, JDialogs,

Barbara Streisand
Freigeben: 2024-10-26 19:50:30
Original
435 Leute haben es durchsucht

Here are a few question-based titles that capture the essence of the article:

* How to Pass Values Between JFrames and JDialogs in Java Swing?
* Retrieving Data from Child Windows: JFrames, JDialogs, and Table Models in Java Swing
* Mastering Communicati

Übergabe von Werten zwischen JFrames

Programmdesign verstehen

Während Sie ursprünglich die Verwendung von zwei JFrames erwähnt haben, scheint es, dass Ihr Design einen JFrame (Frame1) umfasst. und ein JDialog zum Anzeigen von Suchergebnissen. Diese Unterscheidung ist wichtig, da JDialogs von ihrem übergeordneten Fenster abhängig sind.

Referenzen übergeben

Um Referenzen zwischen GUI-Objekten, einschließlich JFrames und JDialogs, zu übergeben, können Sie Standard-Java-Referenzen verwenden. Wenn ein Fenster ein anderes öffnet, behält das übergeordnete Fenster normalerweise einen Verweis auf das untergeordnete Fenster bei und kann darauf Methoden aufrufen.

Daten zum richtigen Zeitpunkt abrufen

Bestimmen, wann Daten von einem untergeordneten Fenster abgerufen werden sollen Fenster hängt von seinem Typ ab:

  • Modale Dialoge: Wenn ein modaler Dialog zurückkehrt, ist der Code unmittelbar nach dem Sichtbarmachen des Dialogs der ideale Zeitpunkt, um seinen Status abzurufen.
  • Nichtmodale Dialoge:Für nichtmodale Dialoge müssen Sie möglicherweise Listener verwenden, um zu bestimmen, wann Informationen extrahiert werden sollen.

Beispiel

Hier Ein einfaches Beispiel, das es einer Schaltfläche in Frame1 ermöglicht, einen JDialog zu öffnen und ein JTextField in Frame1 mit dem im JTextField des JDialogs eingegebenen Text zu füllen:

<code class="java">import java.awt.Window;
import java.awt.Dialog.ModalityType;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.*;

public class WindowCommunication {

    public static void main(String[] args) {
        java.awt.EventQueue.invokeLater(() -> createAndShowUI());
    }

    private static void createAndShowUI() {
        JFrame frame1 = new JFrame("frame1");
        MyFramePanel panel1 = new MyFramePanel();
        frame1.getContentPane().add(panel1);
        frame1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame1.pack();
        frame1.setLocationRelativeTo(null);
        frame1.setVisible(true);
    }

    static class MyFramePanel extends JPanel {

        private JTextField textField;
        private JButton openDialogButton;

        private JDialog dialog;
        private MyDialogPanel dialogPanel;

        public MyFramePanel() {
            textField = new JTextField(10);
            textField.setEditable(false);
            textField.setFocusable(false);

            openDialogButton = new JButton("Open Dialog");
            openDialogButton.addActionListener(new ActionListener() {
                @Override
                public void actionPerformed(ActionEvent e) {
                    openDialogAction();
                }
            });

            add(textField);
            add(openDialogButton);
        }

        private void openDialogAction() {
            if (dialog == null) {
                Window win = SwingUtilities.getWindowAncestor(this);
                if (win != null) {
                    dialog = new JDialog(win, "My Dialog",
                            ModalityType.APPLICATION_MODAL);
                    dialogPanel = new MyDialogPanel();
                    dialog.getContentPane().add(dialogPanel);
                    dialog.pack();
                    dialog.setLocationRelativeTo(null);
                }
            }
            dialog.setVisible(true);

            // Here, after the modal dialog is disposed, the text from the
            // dialog's JTextField is retrieved and set into this JDialog's JTextField.
            textField.setText(dialogPanel.getFieldText());
        }
    }

    static class MyDialogPanel extends JPanel {

        private JTextField textField;
        private JButton okButton;

        public MyDialogPanel() {
            textField = new JTextField(10);

            okButton = new JButton("OK");
            okButton.addActionListener(new ActionListener() {
                @Override
                public void actionPerformed(ActionEvent e) {
                    okButtonAction();
                }
            });

            add(textField);
            add(okButton);
        }

        public String getFieldText() {
            return textField.getText();
        }

        private void okButtonAction() {
            Window win = SwingUtilities.getWindowAncestor(this);
            if (win != null) {
                win.dispose();
            }
        }
    }
}</code>
Nach dem Login kopieren

Zum Abrufen von Daten aus einer JTable können Sie ähnliche Techniken verwenden, Möglicherweise müssen Sie jedoch zusätzliche Faktoren berücksichtigen, z. B. die Auswahl der Tabellenzeile.

Das obige ist der detaillierte Inhalt vonHier sind einige fragenbasierte Titel, die den Kern des Artikels zusammenfassen: * Wie übergebe ich Werte zwischen JFrames und JDialogs in Java Swing? * Abrufen von Daten aus untergeordneten Fenstern: JFrames, JDialogs,. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!