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 ??

Était-ce utile?

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;
    }
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top