Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/372.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用循环指定按钮_Java_Swing_Loops_Jframe - Fatal编程技术网

Java 使用循环指定按钮

Java 使用循环指定按钮,java,swing,loops,jframe,Java,Swing,Loops,Jframe,所以我一直在努力开发一个计算器来练习我的Swing应用程序。我试图分配每个整数按钮,以便在文本字段中打印它们各自的整数 for (setBAction = 0; setBAction < 10; setBAction++) { numButtons[setBAction].addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) {

所以我一直在努力开发一个计算器来练习我的Swing应用程序。我试图分配每个整数按钮,以便在文本字段中打印它们各自的整数

    for (setBAction = 0; setBAction < 10; setBAction++) {

        numButtons[setBAction].addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                textArea.append("" + setBAction);
            }

        });
    }
for(setBAction=0;setBAction<10;setBAction++){
numButtons[setBAction].addActionListener(新建ActionListener()){
已执行的公共无效操作(操作事件e){
textArea.append(“+setBAction”);
}
});
}
当我在应用程序中按下任何按钮[]时,它总是打印“10”

我知道我可以单独映射每个按钮,但我觉得必须有一个简单循环的更有效的方法

如何修复此代码并使用循环有效地将每个按钮分配给各自的整数


编辑:谢谢“DontKnowMuchBut Getting Better”,使用一个简单的私有int,问题很容易解决

当前代码的ActionListeners在按下按钮时使用setBAction的当前值,即10,因为按钮按下都发生在创建循环完成之后。取而代之的是,考虑给每个ActualListNead一个私有字段来保存值

比如:

    for (setBAction = 0; setBAction < numButtons.length; setBAction++) {

        numButtons[setBAction].addActionListener(new ActionListener() {
            private int value = setBAction;  // set on creation

            public void actionPerformed(ActionEvent e) {
                textArea.append("" + value);
            }

        });
    }
然后通过镜像方法获取它们:

JComponent#getClientProperty(Object key)
JComponent#getClientProperty(Object key)