Vous devez réduire le couplage entre ces objets.
Vous pouvez avoir un objet maître, qui possède tous les champs de texte et le bouton (les panneaux ne sont pas pertinents)
Ensuite, un ActionListener separete dans cet objet maître (je l'appelle médiateur voir schéma de médiateur)
Cet écouteur d'actions exécute une méthode sur le médiateur qui, à son tour, prend les valeurs des champs de texte et crée peut-être un objet de transfert.
De cette façon, vous réduisez le couplage entre les panneaux, les champs de texte, etc. et laissez le contrôle à un endroit (le médiateur) qui est, vous ne les laissez pas se connaître.
Vous pouvez jeter un oeil au code dans cette question: https://stackoverflow.com/questions/324554/#324559
Il montre ces concepts dans le code en cours d'exécution.Par ailleurs, le modèle d'observateur est déjà implémenté dans JTextField, JButton, ActionListener, etc. Vous avez juste besoin d'ajouter les crochets.
J'espère que cela aide.
EDIT Joint deux réponses en une seule.
Ceci est le code.
class App { // this is the mediator
// GUI components.
private JFrame frame;
private JTextField name;
private JTextField count;
private JTextField date;
// Result is displayed here.
private JTextArea textArea;
// Fired by this button.
private JButton go;
private ActionListener actionListener;
public App(){
actionListener = new ActionListener(){
public void actionPerformed(ActionEvent e){
okButtonPressed();
}
};
}
private void okButtonPressed(){
// template is an object irrelevant to this code.
template.setData(getData());
textArea.setText(template.getTransformedData());
}
public void initialize(){
frame = new JFrame("Code challenge v0.1");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
name = new JTextField();
count = new JTextField();
date = new JTextField();
textArea = new JTextArea();
go = new JButton("Go");
go.addActionListener(actionListener); // prepare the button.
layoutComponents(); // a lot of panels are created here. Irrelevant.
}
}
code complet et en cours d'exécution peut être récupéré here:
Il est important de favoriser la composition de l'héritage lorsque cela est possible.