java - 滚动 Pane 中所有复选框的操作监听器?

标签 java swing user-interface events

我正在 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/

相关文章:

java - 如何在 OSX 10.6 Snow Leopard 上最好地安装 Rhino

java - 以编程方式将数据源添加到嵌入式 tomcat 7 中的 JNDI 上下文

Java 进程在主要 GC 期间死亡 "Out of swap space",机器上剩余大量内存

java - 从 Swing tableModel 中删除空白 propertyColumn

java - Runtime.getRuntime.exec() 问题

user-interface - 设计规则系统的好引用/技巧?

java - 关于广播接收器

java - 为了在 java swing 中使用 setToolTipText() 方法,我应该导入什么?

java - 奇怪的图形错误 : a copy of component A is painted on component B. 帮助! ( java )

java - 我应该从它的 java swing gui 中分离出一个数据类吗?