gestion du cadre parent à partir du cadre enfant sur java swing


J'ai un jframe (parent) qui crée un cadre d'entrée (enfant) où j'obtiens un paramètre.

Dans le cadre "enfant", j'ai les boutons "ok" et "annuler".

Lorsque le bouton "ok" est enfoncé, le cadre parent doit être mis à jour avec de nouvelles données.

Quelle est la meilleure façon de le faire??

Author: Giancarlo, 2009-02-21

4 answers

Transmettez une référence au cadre parent lorsque vous créez (ou affichez) le cadre enfant. Cela nécessitera un constructeur surchargé ou une méthode d'affichage.

Une fois que l'enfant a la référence, il peut bien sûr appeler n'importe quelle méthode que le parent expose comme publique, comme UpdateDate()

 4
Author: colithium, 2009-02-21 17:09:01

À partir 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);

    .....

  }

}
 10
Author: corlettk, 2009-03-07 04:00:23

Vous pouvez demander au JFrame d'implémenter ActionListener et de l'ajouter au bouton en utilisant addActionListener.

 0
Author: Tom Martin, 2009-02-22 20:19:52

J'aime mettre une méthode 'launch()' sur tous mes cadres / boîtes de dialogue. Avec la bonne modalité, il peut renvoyer un résultat.

Exemple de valeur de retour de la boîte 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;
    }
}
 0
Author: Peter L, 2010-11-26 06:08:49