1

我在这里有一段代码,我不确定几个命令的作用:

//this bit is the body of the main method
//lots of stuff omitted
project frame = new project();
frame.createGUI();

private void createGUI() {
    setDefaultCloseOperation(EXIT_ON_CLOSE);
    panel = new JPanel();
}

那么当frame.createGUI();被调用时,中的两个命令会发生什么createGUI();?他们是

setDefaultCloseOperation(EXIT_ON_CLOSE);
panel = new JPanel();

或者

frame.setDefaultCloseOperation(EXIT_ON_CLOSE);
frame.panel = new JPanel();

还是完全是别的东西?我是 Java 的新手,今年开始了 12 年的计算机科学,但我有点领先于课堂。

谢谢你的时间!

4

4 回答 4

1
setDefaultCloseOperation(EXIT_ON_CLOSE);

设置用户关闭窗口 (JFrame) 时发生的操作。该方法适用于 JFrame。如果该类扩展了 JFrame 那么setDefaultCloseOperation(EXIT_ON_CLOSE);很好,因为如果不是,它将调用 JFrame 的方法,那么它应该是frame.setDefaultCloseOperation(EXIT_ON_CLOSE);但是如果项目扩展了 JFrame 这将起作用

panel = new JPanel();

这将创建一个新面板。

于 2013-04-01T09:22:36.027 回答
1

Java 中的每个非静态方法都有一个隐藏参数,称为this. 它的值是调用中点前面的对象。在方法体内,其他方法的调用隐含this.在它们前面。如果变量不能在本地解决,那么变量的使用也是如此。如果this引用是明确的,您的方法将如下所示:

private void createGUI(project this) {
    this.setDefaultCloseOperation(this, EXIT_ON_CLOSE);
    this.panel = new JPanel();
}

在 main 方法的调用中createGUI,真正发生的事情是这样的:

frame.createGUI(frame);

运行createGUIthis引用是对frame.

于 2013-04-01T09:37:06.047 回答
0

frame.createGUI();意味着您frame在上面定义了一行的对象调用了该方法createGUI()

setDefaultCloseOperation(EXIT_ON_CLOSE);这意味着当用户单击窗口左上角的 X 按钮时,将关闭该窗口。

setDefaultCloseOperation(EXIT_ON_CLOSE);你可以尝试一下并从方法中删除createGUI(),看看会发生什么

如果你想了解更多,看这里

于 2013-04-01T09:27:22.253 回答
0

您的两种选择实际上是相同的。在这两种情况下,您都在调用frame您创建的对象的方法。在类的方法中,您不必特别说:this.doSomethimg()or this.myField = 123,您可以只写doSomething()or myField = 123。从类外部的方法中,您必须指出您希望为哪个实例调用该方法。

于 2013-04-01T09:31:57.337 回答