java如何知道使用什么索引

java如何知道使用什么索引,java,events,jbutton,actionlistener,Java,Events,Jbutton,Actionlistener,我有一个快速的问题,下面的代码如何知道按下了什么索引,让我困惑的是它通过for循环向每个按钮添加了一个actionlistener,但是当我按下一个按钮时,程序如何知道索引是1还是5,因为索引只等于for循环当前索引(如果这不合理,请告诉我,idk如何正确地将此问题付诸实施) private void按钮监听器(){ 对于(int i=0;i匿名类会复制它们使用的字段。如果有字段,它们甚至会复制一份this。(默认情况下称为this$0)如果使用调试器或反射,您可以看到这些值。它们隐式地传递给类

我有一个快速的问题,下面的代码如何知道按下了什么索引,让我困惑的是它通过for循环向每个按钮添加了一个actionlistener,但是当我按下一个按钮时,程序如何知道索引是1还是5,因为索引只等于for循环当前索引(如果这不合理,请告诉我,idk如何正确地将此问题付诸实施)

private void按钮监听器(){

对于(int i=0;i匿名类会复制它们使用的字段。如果有字段,它们甚至会复制一份
this
。(默认情况下称为
this$0
)如果使用调试器或反射,您可以看到这些值。它们隐式地传递给类的构造函数并生成最终字段。它可以访问的字段必须是
final
,以简化使用。在Java 8中,闭包可以访问实际上是final的字段,也就是说,它们可以被设置为final。

匿名OU类会复制它们所使用的字段。如果有
this
,它们甚至会复制一份。(默认情况下称为
this$0
)如果您使用调试器或反射,您可以看到这些值。它们隐式地传递给类的构造函数并生成最终字段。它可以访问的字段必须是
final
,以简化使用。在Java 8中,闭包可以访问有效的最终字段,也就是说,它们可以被设置为final。

answer比我的好:)+1好吧,那就更有意义了!感谢bunchOne最后一件事,我认为最终值不应该增加,如果它是最终值,为什么最终索引会增加?@Loligans不会。你是在增加
I
你的答案比我的好:)+1哦,好吧,这更有意义!感谢bunchOne最后一件事,我认为最终值不应该递增,为什么最终索引在其最终值时会递增?@Loligans不会。您正在递增
I
private void buttonEvtListeners(){
    for(int i=0;i<6;i++){
        final int index = i;
        comp.buttons1[i].addActionListener(new ActionListener(){
            @Override
            public void actionPerformed(ActionEvent e){
                if(index < 3){
                    System.out.println("Save button index: " + index);
                }else{
                    System.out.println("Panel Save button index: " + index);
                }
            }
        });
        comp.buttons2[i].addActionListener(new ActionListener(){
            @Override
            public void actionPerformed(ActionEvent e){
                if(index < 3){
                    System.out.println("Default button index: " + index);
                }else{
                    System.out.println("Panel Default button index: " + index);
                }
            }
        });
        comp.buttons3[i].addActionListener(new ActionListener(){
            @Override
            public void actionPerformed(ActionEvent e){
                if(index < 3){
                    System.out.println("Undo button index: " + index);
                }else{
                    System.out.println("Panel Undo button index: " + index);
                }
            }
        });
    }
}