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很好,我现在明白你的意思了。我已经明白了原因。