【问题标题】:Can I add an ActionListener to a JPanel我可以将 ActionListener 添加到 JPanel
【发布时间】:2012-11-13 21:53:23
【问题描述】:

我正在创建一个基本上有很多按钮的摇摆程序,我在想,如果我可以将侦听器添加到JPanel,而不是单独为每个按钮添加侦听器,并使用读取事件.getSource() 函数,事情会容易得多吗?有可能吗?

【问题讨论】:

  • 所有按钮的功能都一样吗?如果它们相同,则创建一个ActionListener 并按照@ivanovic 所说的那样做(+1 给他)。如果它们不一样,您可能会对Anonymous Listeners 感兴趣,您可以将其添加到单个按钮中。我会回避单个 ActionListenerif 检查 按下哪个按钮。但是如果你必须而不是像@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 被按下

    • put/getClientProperty

    • ActionCommand

    • 以编程方式在JButtons 的数组中循环并比较事件和JButton

    【讨论】:

      【解决方案3】:

      不,你不能,看看documentation

      如果所有按钮都具有相同的侦听器行为,请将它们添加到 ArrayList<JButton> 并在循环中添加 ActionListener 的相同实例

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-02-05
        • 2014-04-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-04-01
        • 1970-01-01
        相关资源
        最近更新 更多