Java里面的JFrame和Frame类的区别是什么
Java里面的JFrame和Frame类的区别是:1.所在的包不同;2.关闭窗口的方式不同;3.add方法不同。所在的包不同是两者最本质的区别,JFrame是在javax.swing包内,而Frame是Window类的直接子类,在包java.awt中。
1.所在的包不同
JFrame是Frame的子类,在javax.swing包内,不能直接用于添加AWT组件或者Swing组件,否则会抛出异常;而Frame是Window类的直接子类,在包java.awt中,可作为父窗体加载其他Swing组件。
2.关闭窗口的方式不同
JFrame类传递参数使得关闭按钮有效;而Frame类加监听使得关闭按钮有效。
与Frame不同,当用户试图关闭窗口时,JFrame知道如何进行响应。用户关闭窗口时,默认的行为只是简单地隐藏JFrame。要更改默认的行为,可调用方法setDefaultCloseOperation(int)。
3.add方法不同
JFrame有add(子件) 和getContentPane().add(子件);而Frame只用add(子件)增加子件。
JFrame覆盖了Container的addImpl方法,所以JFrame的add 和Frame的add不一样。
延伸阅读
JFrame窗体是做什么的
JFrame窗体是Swing程序中各个组件的载体,JFrame窗体是一个承载Swing组件的容器,它拥有普通窗体应具备的功能。
JFrame在程序中的语法如下:
- JFrame jframe = new JFrame(“title”);
- Container container = jframe.getContentPane();
当然,JFrame的构造函数也有无参版本:
- JFrame jframe = new JFrame();
- Container container = jframe.getContentPane();
代码中用JFrame对象调用getContentPane()方法获取顶层父类Container的对象container。大家应该会有这样一个概念:Swing组件的窗体通常与组件和容器相关,因此,我们在创建完JFrame对象后,需要调用getContentPane()方法,将窗体转换为容器。然后在容器中利用Container类的add()方法进行添加组件操作。