【发布时间】:2014-04-09 18:32:58
【问题描述】:
我正在尝试将ActionListener 添加到在循环中创建的JButton,然后从另一个类(控制器类)调用ActionListener,但它不起作用。我不知道为什么。
这是第一堂课
public class Browse extends JPanel {
private JButton play_lists_btn;
public Browse() {
int increment = 0;
while (increment < 5) {
add(createButton(increment));
increment++;
}
}
private JButton createButton(final int i) {
play_lists_btn = new JButton();
play_lists_btn.setText(" This is " + i);
return play_lists_btn;
}
public void addPlayListener(ActionListener play) {
play_lists_btn.addActionListener(play);
}
public static void main(String args[]) {
Browse b = new Browse();
BrowseController bc = new BrowseController(b);
JFrame frame = new JFrame();
frame.add(b);
frame.setSize(1100, 830);
frame.setLocationRelativeTo(null);
frame.setResizable(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
}
这里是调用按钮ActionListener的控制器类,并为按钮创建ActionEvent
public class BrowseController {
private Browse b;
public BrowseController(Browse b) {
this.b = b;
b.addPlayListener(new PlayListener());
}
private class PlayListener implements ActionListener {
@Override
public void actionPerformed(ActionEvent e) {
String text = (String) e.getActionCommand();
System.out.println(text);
}
}
}
似乎没有任何效果。打印语句永远不会出现。请帮忙,因为我正在尝试实现MVC 设计模式。
【问题讨论】:
-
每次调用
createButton()时都会重置变量play_lists_bt。所以设置一次只会影响你上次更改play_lists_bt的时间。
标签: java swing model-view-controller jbutton actionlistener