Frage

Ich habe einen JFrame (Elternteil), die einen Eingangsrahmen (Kind) erzeugt, wo ich einige Parameter zu bekommen.

In dem "Kind" frame I "ok" und "Abbrechen" Tasten haben.

Wenn Sie „OK“ Taste gedrückt wird, muss der übergeordnete Rahmen mit neuen Daten aktualisiert werden.

Was ist der beste Weg, das zu tun ??

War es hilfreich?

Lösung

Der Pass in einem Verweise auf den übergeordneten Rahmen, wenn Sie erstellen (oder Anzeige), um das Kind Rahmen. Dies wird ein überladenen Konstruktor oder Anzeigeverfahren erforderlich ist.

Sobald das Kind die Referenz hat, kann es natürlich jede Methode aufrufen, die die Eltern als öffentlich, wie UpdateDate ()

aussetzt

Andere Tipps

Ab Java 1.3

public class MyPanel extends JPanel
{

  public MyPanel() {

    ....

    JButton cancelButton = new JButton("Cancel");
    cancelButton.addActionListener(
      new ActionListener() {
        public void actionPerformed(ActionEvent e) {
          // <<<< HERE'S THE INTERESTING BIT >>>>
          javax.swing.SwingUtilities.getWindowAncestor(MyPanel.this).dispose();
        }
      }
    );
    add(cancelButton);

    .....

  }

}

könnten Sie haben die JFrame Action implementieren und auf die Schaltfläche addActionListener hinzuzufügen.

Ich mag eine ‚Start ()‘ setzen Methode auf alle meine Bilder / Dialoge. Mit der richtigen Modalität kann es ein Ergebnis zurück.

Beispiel für Rückgabewert von Dialog:

private static class MyDialog extends JDialog {
    String result;
    private JButton btnOk = new JButton("OK");

    public MyDialog() {
        setDefaultCloseOperation(DISPOSE_ON_CLOSE);
        setModalityType(ModalityType.APPLICATION_MODAL);

        add(btnOk);
        btnOk.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                result = "Ok";
                setVisible(false);
            }
        });
    }

    public String launch() {
        result = "Cancel";
        pack();
        setVisible(true);
        return result;
    }
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top