Java 滚动窗格中所有复选框的操作侦听器?
我在Java Swigs工作。我有两个滚动窗格,包含n1和n2个复选框。如果选中了第一个滚动窗格中的复选框,则必须禁用第二个滚动窗格中的相应复选框,反之亦然。是否需要在所有复选框上添加actionlistener?如果我有20个复选框,那么添加20个动作监听器似乎有点困难。有更好的方法吗?您必须将侦听器绑定到每个复选框。但是,您可以编写一个简单的方法来循环滚动窗格的所有组件,过滤那些复选框,并将侦听器绑定到每个组件。这样可以避免手动将侦听器绑定到每个复选框。必须将侦听器绑定到每个复选框。但是,您可以编写一个简单的方法来循环滚动窗格的所有组件,过滤那些复选框,并将侦听器绑定到每个组件。这样可以避免手动将侦听器绑定到每个复选框 是否需要在所有复选框上添加actionlistener 是,如果您希望能够响应该组件触发的事件 有更好的方法吗Java 滚动窗格中所有复选框的操作侦听器?,java,swing,user-interface,events,Java,Swing,User Interface,Events,我在Java Swigs工作。我有两个滚动窗格,包含n1和n2个复选框。如果选中了第一个滚动窗格中的复选框,则必须禁用第二个滚动窗格中的相应复选框,反之亦然。是否需要在所有复选框上添加actionlistener?如果我有20个复选框,那么添加20个动作监听器似乎有点困难。有更好的方法吗?您必须将侦听器绑定到每个复选框。但是,您可以编写一个简单的方法来循环滚动窗格的所有组件,过滤那些复选框,并将侦听器绑定到每个组件。这样可以避免手动将侦听器绑定到每个复选框。必须将侦听器绑定到每个复选框。但是,您
如果您有几个组件,请考虑使用一个数组来允许您对组件进行循环。您可以实现许多
ActionListener
,每个组件一个,或者使用一个ActionListener
。如果是后者,则可以通过检查事件源来检查触发事件的组件
final int totalNumber = 20;
final JCheckBox[] boxes = new JCheckBox[totalNumber ];
ActionListener myListener = new ActionListener(){
@Override
public void actionPerformed(ActionEvent e){
Component c = (Component)e.getSource();
for ( int i = 0; i < totalNumber; i++ ){
if ( c == boxes[i] ){//this is the component that fired the event
//do something
}
}
}
};
for ( int i = 0; i < totalNumber; i++ ){
boxes[i] = new JCheckBox("Box " + i);
boxes[i].addActionListener(myListener);
parentContainer.add(boxes[i]);
}
final int totalNumber=20;
最终JCheckBox[]框=新JCheckBox[totalNumber];
ActionListener myListener=新建ActionListener(){
@凌驾
已执行的公共无效操作(操作事件e){
组件c=(组件)e.getSource();
对于(int i=0;i
是否需要在所有复选框上添加actionlistener
是,如果您希望能够响应该组件触发的事件
有更好的方法吗
如果您有几个组件,请考虑使用一个数组来允许您对组件进行循环。您可以实现许多
ActionListener
,每个组件一个,或者使用一个ActionListener
。如果是后者,则可以通过检查事件源来检查触发事件的组件
final int totalNumber = 20;
final JCheckBox[] boxes = new JCheckBox[totalNumber ];
ActionListener myListener = new ActionListener(){
@Override
public void actionPerformed(ActionEvent e){
Component c = (Component)e.getSource();
for ( int i = 0; i < totalNumber; i++ ){
if ( c == boxes[i] ){//this is the component that fired the event
//do something
}
}
}
};
for ( int i = 0; i < totalNumber; i++ ){
boxes[i] = new JCheckBox("Box " + i);
boxes[i].addActionListener(myListener);
parentContainer.add(boxes[i]);
}
final int totalNumber=20;
最终JCheckBox[]框=新JCheckBox[totalNumber];
ActionListener myListener=新建ActionListener(){
@凌驾
已执行的公共无效操作(操作事件e){
组件c=(组件)e.getSource();
对于(int i=0;i