我这里有一段代码,我不确定几行命令是什么:
//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年级的计算机科学,但是有点领先于课程。
谢谢你的时间!
答案 0 :(得分:1)
setDefaultCloseOperation(EXIT_ON_CLOSE);
设置用户关闭Window(JFrame)时发生的操作。该方法适用于JFrame。如果类扩展了JFrame,那么setDefaultCloseOperation(EXIT_ON_CLOSE);
就可以了,因为它会调用JFrame的方法,如果不是,那么它应该是frame.setDefaultCloseOperation(EXIT_ON_CLOSE);
但是如果项目扩展JFrame将会有效
panel = new JPanel();
这会创建一个新面板。
答案 1 :(得分:1)
Java中的每个非静态方法都有一个名为this
的隐藏参数。它的值是调用中点前面的对象。在方法体内,其他方法的调用隐含在它们前面this.
。如果它们无法在本地解析,那么变量的使用也是如此。如果this
引用是显式的,那么您的方法将如下所示:
private void createGUI(project this) {
this.setDefaultCloseOperation(this, EXIT_ON_CLOSE);
this.panel = new JPanel();
}
在主方法中调用createGUI
时,真正发生的事情是这样的:
frame.createGUI(frame);
运行createGUI
时,this
引用是对frame
的引用。
答案 2 :(得分:0)
frame.createGUI();
表示您在上面定义一行的对象frame
调用方法createGUI()
setDefaultCloseOperation(EXIT_ON_CLOSE);
这意味着当用户单击窗口左上角的X按钮时,将关闭该窗口。
您可以尝试一下并从setDefaultCloseOperation(EXIT_ON_CLOSE);
方法中删除createGUI()
,看看会发生什么
如果您想了解更多信息,请查看here
答案 3 :(得分:0)
你的两个选择真的是同一个。在这两种情况下,您都在调用您创建的frame
对象的方法。在课程的方法中,您不必具体说:this.doSomethimg()
或this.myField = 123
,您只需撰写doSomething()
或myField = 123
即可。从类外部的方法,您必须指出您希望方法调用的实例。