我在理解以下代码时遇到问题:
import java.awt.Dimension;
import java.awt.GridLayout;
import javax.swing.*;
public class A
{
public A(){
JFrame myframe = new JFrame ("hz window");
myframe.setLayout(new GridLayout ());
myframe.setSize(new Dimension (500, 200));
myframe.setVisible(true);
}
public static void main (String arg[]){
new A();
// System.gc(); //1
//Runtime.getRuntime().gc(); //2
}
}
myframe对象的范围是类A的构造函数,对吗?
然后,为什么窗口不消失(即在第1行和第2行中被垃圾收集器删除了)
我们在Java程序中创建的所有gui元素的范围是什么?
JVM在哪里保留所有指向应用程序gui对象的链接?
很抱歉有新手问题。
最佳答案
Swing会保留对每个窗口对象的引用,直到用户关闭它们或使用dispose()
功能强行放置它们为止。否则,您将看到神秘消失的GUI元素。
关于java - GUI元素的垃圾收集器,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9247746/