我正在 Java swing 领域工作。我有两个滚动 Pane 包含 n1 和 n2 个复选框。如果选择第一个滚动 Pane 中的复选框,那么我必须禁用第二个滚动 Pane 中相应的复选框,反之亦然。我需要在所有复选框上添加 Action 监听器吗?如果我有 20 个复选框,那么添加 20 个 Action 监听器似乎需要一些工作。有更好的方法吗?
最佳答案
Do i need to add actionlistener on all the checkboxes?
是的,如果您希望能够响应该组件触发的事件。
Is there a better way to do it?
如果您有多个组件,请考虑使用数组来循环遍历组件。您可以实现多个 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]);
}
关于java - 滚动 Pane 中所有复选框的操作监听器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39088660/