gestion cadre parent du cadre enfant java swing
Question
J'ai un JFrame (parent) qui crée une trame d'entrée (enfant) où je reçois un paramètre.
Dans le cadre « enfant » J'ai des boutons « ok » et « annuler ».
Lorsque le bouton « ok » est pressé, le cadre parent doit être mis à jour avec de nouvelles données.
Quelle est la meilleure façon de le faire ??
La solution
Passez dans une référence au cadre parent lorsque vous créez (ou affichage) le cadre de l'enfant. Cela nécessitera une méthode constructeur ou l'affichage surchargé.
Une fois que l'enfant a la référence, il peut d'appeler bien sûr toute méthode que le parent expose comme public, comme UpdateDate ()
Autres conseils
de 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);
.....
}
}
Vous pourriez avoir le JFrame mettre en œuvre ActionListener et l'ajouter à la touche en utilisant addActionListener.
Je tiens à mettre une méthode « lancement () » sur tous mes cadres / boîtes de dialogue. Avec la modalité droite, il peut renvoyer un résultat.
Exemple de valeur de retour de dialogue:
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;
}
}