从java

时间:2017-10-26 09:03:36

标签: java mouseevent inner-classes mouselistener anonymous-inner-class

我想从i方法访问mouseClicked。任何人都可以帮我解决这个问题吗?

这是我的代码片段 -

for (int i = 0; i < 9; i++) {
        JLabel jl = new JLabel(String.valueOf(i));
        jl.addMouseListener(new MouseAdapter() {
            public void mouseClicked(MouseEvent evt) {

                        addAnEventToLabel(i); //Error 1
            }
        });
    }

错误1 - 从内部类引用的局部变量必须是最终的或有效的最终(在IDE中显示) 但没有运行时或Compliletime异常。

1 个答案:

答案 0 :(得分:1)

你应该可以这样做:

for (int i = 0; i < 9; i++) {
    final int tmpI = i;
    JLabel jl = new JLabel(String.valueOf(i));
    jl.addMouseListener(new MouseAdapter() {
        public void mouseClicked(MouseEvent evt) {

                    addAnEventToLabel(tmpI);
        }
    });
}