【问题标题】:"Cannot refer to a non-final variable inside an inner class defined in a different method," when using swing in java“不能引用在不同方法中定义的内部类中的非最终变量”,在 java 中使用 swing 时
【发布时间】:2015-04-02 17:10:36
【问题描述】:

我知道有些问题与此问题有些相关,但这些人与我在这里遇到的问题不同。无论如何,下面是我的整个代码,但是只有一行不起作用。当我使用 addActionListener 方法查找单击名为“btn”的按钮时,btn.setText("testing 1 2 3") 给出了此问题标题中所示的错误。我不确定这意味着什么以及如何解决它。

import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class graphicsTestClass {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        JFrame frame = new JFrame("title here");
        frame.setVisible(true);

        JButton btn = new JButton("click");
        frame.getContentPane().add(btn);

        btn.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e)
            {
                btn.setText("testing 1 2 3") //error is here
            }
        });      
    }
}

请帮忙!并提前感谢。

【问题讨论】:

  • 阅读错误信息,然后搜索寻找错误信息。这不是一个“新”问题。
  • 我只是复制粘贴了您的代码,它确实有效。确保您的代码中没有其他内容。如果你的程序只有这个没有意义,它会给出这个错误
  • @VenelinK 你在 Java 8 上,他们在 Java 7 上。
  • 哇,刚刚学到了一些新东西。我认为你必须在设置文本之前添加类名 graphicsTestClass,因为 btn 是隐藏的。猜猜你不必再使用 Java 8 了。谢谢

标签: java eclipse swing


【解决方案1】:

JButton 之前添加final。您无法在内部类中访问非最终和非实例变量。

final JButton btn = new JButton("click");

【讨论】:

    猜你喜欢
    • 2010-11-20
    • 2014-12-09
    • 1970-01-01
    • 2012-12-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多