1

我为我的程序制作了一个面板。它仅由 RadioButtons 组成。选择单选按钮时,我想在其他代码中设置一个布尔值。该面板将用作更大面板或框架的组件,该面板或框架也应该能够侦听该面板内发生的事件。

那么,我应该选择以下哪个选项来收听事件 -

1 -

RadioButtonPanel extends JPanel implements ActionListener{

  public void actionPerformed(ActionEvent e){}
  //code to add the action listener to the radio buttons 
  oneRadioButton.addActionListener(this);   
}

2 -

RadioButtonPanel extends JPanel{

  class InnerStrength implements ActionListener{
     public void actionPerformed(ActionEvent e){} 
   }    

  //code to add the action listener to the radio buttons     
  oneRadioButton.addActionListener(Anonymous InnerStrength) 

}

3 - 还有其他我没有想到的方法吗?

4

2 回答 2

5

选项 3. 如果您可以通过使用它来达到目标​​,则根本不要扩展JPanel :-)

所有 JSomething 都具有旨在按原样使用的内置功能。JPanel 的内置功能是通用容器的功能。由于您所做的只是添加子项,因此无需扩展 - 可以在...配置代码中配置带有侦听器的子项。

如果扩展确实增加了功能(对于可能正在实现自定义背景绘制的 JPanel),一般规则是 - 与行为良好的 OO 公民一样 -永远不要公开不打算供公众使用的公共 api:因此,变体 1 是不是一个选择。

于 2013-04-01T09:21:26.777 回答
4

add/RemoveActionListener方法添加到您的面板。使用这些作为代理单选按钮并ActionListener直接注册到它

或者,您可以提供一个isSelected返回单选按钮状态的方法。

于 2013-04-01T07:57:13.537 回答