Verwaltung von untergeordneten Frame auf java swing geordneten Rahmen
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 ??
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 ()
aussetztAndere 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;
}
}