将actionListeners添加到已添加到JToolBar的新JButton

时间:2013-11-27 20:45:47

标签: java swing jbutton

希望这个标题能很好地解释我的问题。我有一个JToolBar,dateBar,我想像这样添加按钮:

    for (Day d : newCal.getDateList()) {
         dateBar.add(new JButton(d.toString()));            
    }

即对于集合中某个对象的每一个,向JToolBar添加一个新Button。这是有效的,除了我不知道如何/如果我可以添加一个actionListener到按钮,所以我可以执行一些计算一旦点击其中一个。

非常感谢,希望我已经足够清楚了。

Ps - 我应该补充一下

 JButton button = new JButton(d.toString());
 button.addActionListener(this);
 dateBar.add(button);

似乎不起作用,即使该方法包含在实现actionListener中的类

也是如此

2 个答案:

答案 0 :(得分:1)

在创建按钮的同一循环中添加actionListener。

示例:

        for (Day d : newCal.getDateList()) {
            JButton button = new JButton(d.toString());
            button.addActionListener(todo);
            dateBar.add(button);
        }

或者,您可以将Action对象传递给构造函数中的按钮。

       for (Day d : newCal.getDateList()) {
           dateBar.add(new JButton(new CalendarAction(d.toString()))));
       }

答案 1 :(得分:1)

试试这个..

for (Day d : newCal.getDateList()) {
     JButton button = new JButton(d.toString());
     button.addActionListener(this);
     dateBar.add(button);            
}

public void actionPerformed(ActionEvent e){
    if(e.getActionCommand().equals("your button label"){
      // do your action
    }
}