猿问

无法使用 ActionListener 访问 this.draw()

我正在尝试让按钮刷新窗口,但收到以下错误消息:


Test.java:21: error: cannot find symbol

                    this.draw();

                        ^

  symbol: method draw()

1 error

这是代码:


import javax.swing.*;

import java.awt.event.*;


public class Test {

    JFrame frame;


    public void createMainWindow() {

        frame = new JFrame();

        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        frame.setSize(800,600);

        JButton refresh = new JButton("Refresh");

        refresh.setBounds(620, 20, 100, 30);

        refresh.addActionListener(new ActionListener() {

                public void actionPerformed(ActionEvent e) {

                    this.draw();

                }

            }

            );

        frame.setLayout(null);

        frame.add(refresh);

        frame.setVisible(true);

        frame.setTitle("Title");

    }


    public void draw() {

        // Code                                                                                                                                                                                                    

        frame.setVisible(true);

    }

}

我显然误解了这一点。


侃侃无极
浏览 129回答 2
2回答

温温酱

this.draw();指ActionListner。你要:Test.this.draw();引用 Test 类中的方法。

慕的地8271018

当您创建显式匿名类时,this指的是ActionListener. 要绘制外部类,请使用Test.this.draw(),或者更简单地说,用 lambda 替换整个侦听器(从技术上讲,它会创建一个匿名类,但不会接管this):refresh.addActionListener(e -> this.draw());
随时随地看视频慕课网APP

相关分类

Java
我要回答