Ich habe eine Klasse erstellt, die EventButton erweitert, was ich BirdButton nenne. Jedes der BirdButtons wird jedoch in einer separaten Klasse instanziiert. Sie werden als private Variablen instanziiert, aber ich würde gerne wissen, welche meiner BirdButtons gedrückt wurden. Die separate Klasse, Treiber, sieht so aus:Zugriff auf private Variablen
import javax.swing.JFrame;
import javax.swing.JTextField;
public class Driver {
private JFrame win;
private Animals animals = new Animals();
private BirdButton nextBtn, enlargeBtn, shrinkBtn, moveToBtn;
private JTextField field;
public Driver() {
win = new JFrame("Angry Animal Name Game");
win.setBounds(100, 100, 600, 600);
win.setLayout(null);
win.setVisible(true);
nextBtn = new BirdButton("NEXT", 10, 10, animals);
win.add(nextBtn, 0);
enlargeBtn = new BirdButton("ENLARGE", 10, 60, animals);
win.add(enlargeBtn, 0);
shrinkBtn = new BirdButton("SHRINK", 10, 110, animals);
win.add(shrinkBtn, 0);
field = new JTextField();
field.setBounds(10, 250, 100, 20);
win.add(field, 0);
moveToBtn = new BirdButton("MOVETO", 10, 275, animals, field);
win.add(moveToBtn, 0);
win.add(animals, 0);
animals.recenter();
win.repaint();
}
}
Sie können sehen, es erstellt 4 Schaltflächen. Ich muss wissen, welche davon schafft meine eventAction für meine nächste Klasse, die die Schaltfläche selbst ist:
import java.awt.event.ActionEvent;
import javax.swing.JTextField;
public class BirdButton extends EventButton {
String a;
public BirdButton(String n, int x, int y, Animals a, JTextField field){
super(n);
setLabel(n);
setBounds(x,y,100,30);
a = a;
}
public BirdButton(String n, int x, int y, Animals a) {
this(n, x, y, a, null);
}
public void actionPerformed(ActionEvent e) {
if (e.getSource() == Driver.nextBtn){
animals.goToNext();
}
}
}
Wie konnte ich meine BirdButton Klasse erhalten, welche der Tasten, um herauszufinden, gedrückt wird, ohne dass der Fahrer Klasse zu ändern?