Je voudrais utiliser des classes et des méthodes d'usine pour générer des composants GUI, mais je ne sais pas comment et dans quelle classe les différents écouteurs doivent être déclarés et ajoutés aux composants.Utilisation de classes de fabrique statiques pour générer des composants GUI - Comment et où ajouter les écouteurs requis?
Si j'ai une classe de fabrique simple telle que celle listée ci-dessous, devrais-je ajouter un ActionListener au bouton avant qu'il ne soit retourné à la classe appelante. Si la réponse est "Oui" alors comment ajouter l'auditeur?
class GUIFactory
{
public static JButton getJButton()
{
JButton aButton = new JButton();
return aButton;
}
}
Supposons que je voulais utiliser la méthode getJButton() pour ajouter 5 boutons à l'interface graphique, comment pourrais-je coder le ActionListener pour qu'il sache quel bouton a été cliqué?
Ou faut-il ajouter les écouteurs dans la classe appelante?
JFrame gui = new JFrame();
gui.add(AppFactory.getJButton());
J'ai essayé le
gui.add(GUIFactory.getJButton().addActionListener(new guiButtonListener()));
et après eu une erreur:
"void" type not allowed here.
Quelle est votre intention d'utiliser une usine? Mais si vous voulez utiliser l'usine, vous devriez envisager de rendre les classes les plus courantes comme 'AbstractButton' de la méthode pour être plus flexible si vous changez vraiment le composant retourné. –
De même, si vous souhaitez créer un chaînage de méthode de mise en valeur des composants, vous pouvez envisager le * Builder Pattern *. –
Bonjour Johannes. Mon but était de créer une interface graphique basée sur JFrame modulaire pour mon application. Dans le passé, mes interfaces graphiques étaient toujours construites en une seule classe et je voulais m'éloigner de cela pour une façon plus ré-utilisable de faire les choses. Pour être honnête avec vous, je n'ai aucune expérience de la mise en œuvre de modèles, d'usines, etc. - en fait, le premier que je connaissais était sur SO lorsque je lisais des questions relatives à java. Les échantillons de code que j'ai publiés ont été ma première tentative basée sur les échantillons d'autres personnes postés ici sur SO. Merci pour la suggestion Builder Pattern. –