【发布时间】:2015-05-11 04:31:30
【问题描述】:
我正在尝试创建动态界面,该界面实质上创建了一个由越来越多的面板组成的网格,类似于下图。我有一些粗略的代码来实现这一点。我在处理已添加到 ArrayList 的 JButtons 的事件方面存在问题。我知道创建内部类事件处理程序是最好的做法,我将如何处理存储在 ArrayList 中的缩放数量的按钮的事件?
目前我已经获得了对象源来实现这一目标。
全局变量:
ArrayList<JButton> buttons = new ArrayList<JButton>();
向面板添加按钮:
for (int i = 0; i < 2; i ++) {
int xTotal = 150;
if (i == 0) {
xTotal = 132;
}
else {
xTotal = 308;
}
xTotal = xTotal + xTotal;
JButton currentButton = new JButton("+");
currentButton.setBounds(xTotal , 375, 45, 25);
currentButton.setFont(currentButton.getFont().deriveFont(14f));
currentButton.addActionListener(new AddHandler());
buttons.add(currentButton);
panel.add(currentButton);
}
事件处理程序:
class AddHandler implements ActionListener {
public void actionPerformed(ActionEvent event) {
Object source = event.getSource();
if (source == buttons.get(0)) {
System.out.println("hello");
}
else {
System.out.println("it worked");
}
}
}
【问题讨论】:
-
我会说,你的方法没有问题。
-
嗯,性能最终会成为问题,使用源代码被认为是不好的做法。
标签: java swing arraylist event-handling