我可以将ActionListener添加到JPanel

时间:2012-11-26 12:07:36

标签: java swing user-interface jpanel actionlistener

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

3 个答案:

答案 0 :(得分:5)

向组件添加侦听器并不意味着您还要将侦听器添加到内部组件。相反,考虑使用按钮组(例如按钮阵列) 并通过一次迭代将监听器添加到所有按钮。

for(JButton button : buttonsArray)
    button.addActionListener(yourActionListener);

答案 1 :(得分:2)

  

我正在创建一个基本上有很多按钮的swing程序,   我在想,而不是单独添加监听器   每个按钮,如果我可以将监听器添加到JPanel,和   使用.getSource()函数读取事件,事情将是一个整体   好多了?有可能吗?

无法添加ActionListener,只有MouseListener才能这样做,但JButton无法正确

取决于您的代码,您必须将ActionListener添加到每个JButtons并确定按下哪个

  • put/getClientProperty

  • ActionCommand

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

答案 2 :(得分:1)

不,你不能,看看documentation

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