图形用户界面主要是由窗口以及窗口中的组件构成的,编写Swing程序主要就是创建窗口和添加组件过 程。Swing中的窗口主要是使用JFrame。JFrame有标题、边框、菜单、大小和窗口 管理按钮等窗口要素。
构建Swing程序主要有两种方式:创建JFrame或继承JFrame。
一、创建JFrame方式
创建JFrame方式就是直接实例化JFrame对象,然后设置JFrame属性,添加窗口所需要的组件。
代码如下:
import javax.swing.*; import java.awt.*; /** * @author : 蔡政洁 * @email :caizhengjie888@icloud.com * @date : 2020/2/22 * @time : 11:36 下午 */ public class SwingDome1 { public static void main(String[] args) { // 创建窗口对象 JFrame jFrame = new JFrame("MyFrame"); // 创建标签 JLabel label = new JLabel("Hello Swing"); // 获得窗口的内容板面 Container container = jFrame.getContentPane(); // 添加标签到内容板面 container.add(label); // 设置窗口大小 jFrame.setSize(300,300); jFrame.setVisible(true); } }
默认情况下JFrame是没有大小且不可见的,因此创建JFrame对象后还需要设置大小和可 见,注意 设置JFrame窗口大小和可见这两条语句,应该在添加完成所有组件之后调用。否则 在多个组件情况下,会导致有些组件没有显示。
创建步骤:创建窗口—— 获得窗口的内容面板或菜单栏—— 创建组件——将创建的组件添加到内容面板 ——设置窗口大小和组件
在Swing中添加到JFrame上的所有可见组件,除菜单栏外,全部添加到内容面板上, 而不要直接添加到JFrame上,这是Swing绘制系统所要求的。
图解JFrame的内容面板
几乎所有的图形用户界面技术,在构建界面时都采用层级结构(树形结构)
根是顶级容器(只能包含其他容器的容器),子容器有内容面板和菜单栏(本 例中没有菜单),然后其他的组件添加到内容面板容器中。所有的组件都有add()方法通 过,通过调用add()方法将其他组件添加到容器中,作为当前容器的子组件。
二、继承JFrame方式
继承JFrame方式就是编写一个继承JFrame的子类,在构造方法中初始化窗口,添加窗口所需要 的组件。
代码如下:
import javax.swing.*; import java.awt.*; /** * @author : 蔡政洁 * @email :caizhengjie888@icloud.com * @date : 2020/2/22 * @time : 11:45 下午 */ public class MyFrame extends JFrame { public MyFrame(String title){ super(title); // 创建标签 JLabel label = new JLabel("Hello World"); // 获得窗口内容板面 Container container = getContentPane(); // 添加标签到内容板面 container.add(label); // 设置窗口大小 setSize(300,300); setVisible(true); } } //调用代码 class HelloWorld{ public static void main(String[] args) { // 创建MyFrame对象 MyFrame myFrame = new MyFrame("MyFrame"); } }
以上两种方式运行效果完全一样
运行结果:
创建JFrame方式适合于小项目,代码量少、窗口不多、组件少的情况。继承JFrame 方式,适合于大项目,可以针对不同界面自定义一个Frame类,属性可以在构造方法中进行 设置;缺点是有很多类文件需要有效地管理。