J'ai un code similaire à ce qui suit:Maintenir OO tout en utilisant les auditeurs en Java
public class myButton extends JButton()
{
public int data;
public myButton(){
super("asdf");
data = 2;
}
}
public class myPanel extends MouseListener()
{
myButton myButtonVar1;
myButton myButtonVar2;
public myPanel()
{
myButtonVar1 = new myButton();
myPanel.add(myButtonVar1);
myButtonVar1.addMouseListener(this);
myButtonVar2 = new myButton();
myPanel.add(myButtonVar2);
myButtonVar2.addMouseListener(this);
}
//MouseListener Methods are here
void mouseClicked(MouseEvent e)
{
//say this changes the myButton that was clicked data based off
//the other myButton's data
doSomething((myButton)(e.getSource()).data);
}
}
Et puis-je ajouter que le panneau à un JFrame via setContentPane.
Cela fonctionne bien. Le gestionnaire doit avoir accès à tous les boutons, car il doit connaître myButtonVar1.data et myButtonVar2.data
Cette configuration ne me convient pas, mais le problème principal est que je dois avoir d'autres boutons dans le cadre, qui accède aux myButtons.
Alors, comment pourrais-je nettoyer cela afin que je puisse ajouter quelque chose un "resetButton" qui réinitialiserait tous les myButtons contenues dans myPanel. L'itinéraire qui me parait le plus serait d'utiliser instanceof pour voir si la source est un resetButton ou myButton, mais cela semble être fortement déconseillé dans tout ce que j'ai vu.
J'espère que je ne suis pas trop loin ici. Mon but est d'écrire du bon code plutôt que de m'en tenir à ce que j'ai, alors laissez-moi savoir si j'ai déjà fait quelque chose de fondamentalement faux et que je devrais revenir en arrière.
Dans 'doSomething ((myButton (e.getSource()). Data)' voulez-vous dire d'appeler un constructeur? Parce que 'myButton' n'a pas de constructeur à paramètre unique défini, et même s'il l'était, un' new' Ou est-ce que vous voulez dire effectuer une sorte de recherche? De plus, les parenthèses sont en déséquilibre –
c'était une erreur, j'ai raté une parenthèse 'faireQuelque chose ((monBouton) (e.getSource()). – Kyle
aha, maintenant que la fermeture de paren change l'image :-) –