2010-05-05 7 views
1

J'ai une forme qui est divisée en deux classes. Chaque classe représente les widgets sur une partie du formulaire. Quelle est la meilleure façon de permettre à ces classes de partager des données entre elles et de se mettre à jour les unes les autres. Exemple: Le bouton de la classe A est cliqué. Mettre à jour le champ de texte dans la classe CCommunication entre classes

Répondre

3
Ce

est très court ce que vous pouvez faire:

public class ButtonFrame extends JFrame implements ActionListener 
{ 
    private TextFieldFrame frame; 

    public ButtonFrame(TextFieldFrame frame) 
    { 
     this.frame = frame; 
     // init your components and add this as actionlistener to the button 
     .... 
    } 

    public void actionPerformed(ActionEvent evt) 
    { 
     frame.notifyButtonPressed(); 
    } 
} 

L'autre classe:

public class TextFieldFrame extends JFrame 
{ 
    private JTextField field = ...; // init in your constructor 

    public void notifyButtonPressed() 
    { 
     field.setText("Yes man!! The button is pressed by the user!"); 
    } 
} 

Encore une fois, ce qui est très court ce que vous avez faire. Vous pouvez également travailler avec un modèle Singleton, mais c'est une meilleure façon.

0

Vous pouvez créer une classe qui contient tous vos objets de formulaire. Les classes de formulaire connaissent toutes la classe parent et communiquent dessus.

Si un bouton est cliqué dans la classe A, la classe A appelle une méthode dans la classe parente et la classe parente notifie à la classe C de mettre à jour son champ de texte.

0

Ne pensez pas au widget. Concevez votre application sur des modèles. Avoir des widgets en tant que fenêtres sur ces modèles. (Et ne couvrent pas les classes inutilement.)

0

Jetez un oeil à Mediator pattern, il pourrait vous donner quelques idées.

En outre, l'objectif du framework JFace Databinding est la synchronisation des valeurs entre les objets, bien que je trouve cela mal documenté et pas très amusant à utiliser. JFace_Data_Binding