2009-02-21 10 views

Répondre

3

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 d'appeler bien sûr toute méthode que le parent expose comme public, comme UpdateDate()

+0

ce que je la solution que je utilise, il n'y a aucun moyen plus propre? – Giancarlo

+0

Merci beaucoup.A résolu mon problème :) – rachana

0

Vous pourriez avoir le JFrame mettre en œuvre ActionListener et l'ajouter au bouton à l'aide addActionListener.

10

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

    ..... 

    } 

} 
+0

Ceci est beaucoup plus propre. +1 – FuriousFolder

0

Je tiens à mettre une méthode 'lancement()' sur tous mes cadres/boîtes de dialogue. Avec la bonne modalité, il peut retourner 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; 
    } 
} 
Questions connexes