【发布时间】:2016-04-15 01:53:15
【问题描述】:
我创建了一个扩展 EventButton 的类,我称之为 BirdButton。但是,每个 BirdButtons 都在一个单独的类中实例化。它们被实例化为私有变量,但我想知道我的哪个 BirdButtons 被按下了。单独的类 Driver 如下所示:
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();
}
}
您可以看到它创建了 4 个按钮。我需要知道其中哪一个会为我的下一个类(即按钮本身)创建我的 eventAction:
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();
}
}
}
如何在不更改 Driver 类的情况下让 BirdButton 类确定按下了哪个按钮?
【问题讨论】:
标签: java private actionevent