Java 在Swing中使用此关键字有什么问题?

Java 在Swing中使用此关键字有什么问题?,java,swing,this,Java,Swing,This,我问这个问题是因为我对他的第二次评论。我一直在使用this关键字来调用局部变量、该类的局部组件(示例按钮)和方法e.t.c。我不确定使用关键字的方式有什么问题 不管在Swing、Java中使用什么(在MCV中,请让我注意一下),都要使用局部变量,而不是 问题:在Swing中使用this.XXX有什么问题 示例代码 public class SwingTest extends JFrame { // variables private String st = "You clicked me";

我问这个问题是因为我对他的第二次评论。我一直在使用
this
关键字来调用局部变量、该类的局部组件(示例按钮)和方法e.t.c。我不确定使用关键字的方式有什么问题

不管在Swing、Java中使用什么(在MCV中,请让我注意一下),都要使用局部变量,而不是

问题:在Swing中使用
this.XXX
有什么问题

示例代码

public class SwingTest extends JFrame {

// variables
private String st = "You clicked me";

SwingTest() {
    this.initUI();

}

private void initUI() {
    this.setTitle("Swing Test");
    this.setSize(200, 200);
    this.setLayout(new BorderLayout());
    this.setVisible(true);

    this.clickMe = new JButton("Click"); // What is wrong with using this
                                            // ref here?

    this.add(clickMe);

    this.clickMe.addActionListener((ActionEvent) -> {
        JOptionPane.showMessageDialog(this, this.st);// What is wrong with
                                                        // using this ref
                                                        // here?
        });
}

public static void main(String[] args) {
    SwingUtilities.invokeLater(new Runnable() {

        @Override
        public void run() {
            SwingTest swingTest = new SwingTest();
        }
    });
}

// components
JButton clickMe;
}

clickMe按钮不需要是字段。它可以是定义方法/构造函数的对话框中的局部变量
JButton clickMe
。由于通常会创建许多GUI组件并将其添加到窗口中,因此它会清理类,使声明接近使用情况,并使生命周期尽可能短(在更改窗口内容时)


(关于
这个
的讨论仅仅是指出
点击我
的领域性)

什么都没有,但它是多余的,因为
这个
通常是假定的。他可能是指你应该有一个
私有的最终JFrame f=new JFrame()
SwingTest
中,而不是扩展
JFrame
。。。但只有他能告诉你…如果你删除了
这个。
那么这个代码也能工作,因为编译器会隐式地传递
这个
引用到实例方法和构造函数中,搜索Java中的继承v.s.组合,Swing,默认情况下,这个想法对所有编程语言都有效,不仅仅是为了Java@mKorbel很好,我现在明白你的意思了。我已经明白了原因。