【问题标题】:Can I add an ActionListener to a JPanel我可以将 ActionListener 添加到 JPanel
【发布时间】:2012-11-13 21:53:23
【问题描述】:
我正在创建一个基本上有很多按钮的摇摆程序,我在想,如果我可以将侦听器添加到JPanel,而不是单独为每个按钮添加侦听器,并使用读取事件.getSource() 函数,事情会容易得多吗?有可能吗?
【问题讨论】:
-
所有按钮的功能都一样吗?如果它们相同,则创建一个ActionListener 并按照@ivanovic 所说的那样做(+1 给他)。如果它们不一样,您可能会对Anonymous Listeners 感兴趣,您可以将其添加到单个按钮中。我会回避单个 ActionListener 和 if 检查 按下哪个按钮。但是如果你必须而不是像@mKorbel 建议的那样使用xxxActionCommand(给他+1)
标签:
java
swing
user-interface
jpanel
actionlistener
【解决方案1】:
向组件添加侦听器并不意味着您也将该侦听器添加到内部组件。相反,考虑使用按钮组(例如按钮数组)
并通过一次迭代将侦听器添加到所有按钮。
for(JButton button : buttonsArray)
button.addActionListener(yourActionListener);
【解决方案2】:
我正在创建一个基本上有很多按钮的摇摆程序,
我在想,而不是将听众单独添加到
每个按钮,如果我可以将侦听器添加到 JPanel,并且
使用 .getSource() 函数读取事件,事情将是一个整体
容易得多?有可能吗?
无法添加ActionListener,只有MouseListener 可以这样做,但JButton 的方法不正确
取决于您的代码,您必须将 ActionListener 添加到每个 JButton 并确定哪个 JButton 被按下
【解决方案3】:
不,你不能,看看documentation
如果所有按钮都具有相同的侦听器行为,请将它们添加到 ArrayList<JButton> 并在循环中添加 ActionListener 的相同实例