从内部类中访问Java actionlistener变量

时间:2016-08-07 06:48:51

标签: java jframe

当我点击我的按钮时,我正试图从文件中读取,但是当我将鼠标悬停在字线上时,我会得到variable is accessed from within inner class

BufferedReader br = new BufferedReader(new FileReader("OGList.txt"));
String line;


SteamIDBtn.addActionListener(new ActionListener() {
    @Override
    public void actionPerformed(ActionEvent e) {
        try {
            while((line = br.readLine()) != null){
                System.out.println(line);
            }
        } catch (IOException e1) {
            e1.printStackTrace();
        }
    }
}

1 个答案:

答案 0 :(得分:1)

Java强制使用final修饰符声明您在内部类中使用的外部变量。另一个解决方案是直接在需要它的匿名内部类的方法中声明你的变量 在你的情况下,在内部类中声明line var似乎更相关,因为它是一个临时变量,在声明它之后被修改。

此外,您不必强制在内部类中声明您的BufferedReader var,但您也可以将其置于内部类中。它对处理进行分组。

SteamIDBtn.addActionListener(new ActionListener() {
    @Override
    public void actionPerformed(ActionEvent e) {
        try {
            BufferedReader br = new BufferedReader(new FileReader("OGList.txt"));
            String line=null;
            while((line = br.readLine()) != null){
                System.out.println(line);
            }
        } catch (IOException e1) {
            e1.printStackTrace();
        }
    }