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

时间:2015-04-13 08:38:42

标签: java swing this

由于对mKorbel's this question次评论,我问这个问题。我一直在使用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;
}

1 个答案:

答案 0 :(得分:2)

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

(关于this的讨论只是指出clickMe的真实性。)