Swing初识

参考资料
[1]王鹏,何昀峰.JavaSwing图形界面开发与案例详解[M].北京:清华大学出版社,2008:407.


文章目录

  • Swing初识
  • 1. 什么是Java Swing
  • 2. Java Swing的结构
  • 3. Java Swing HelloWorld
  • 4. 使用IDE开发Java Swing
  • 5. Eclipse可视化开发插件WindowBuilder
  • 6. Java Swing的组件基础
  • 6.1 Window类
  • 6.2 JComponet类
  • 6.2.1 JComponent类的子类
  • 6.2.2 JComponent的主要功能特性


1. 什么是Java Swing

  • Swing 是一个为Java设计的GUI工具包。
  • Swing是JAVA基础类的一部分。
  • Swing包括了图形用户界面(GUI)器件如:文本框,按钮,分隔窗格和表。
  • Swing提供许多比AWT更好的屏幕显示元素。它们用纯Java写成,所以同Java本身一样可以跨平台运行,这一点不像AWT。它们是JFC的一部分。它们支持可更换的面板和主题(各种操作系统默认的特有主题),然而不是真的使用原生平台提供的设备,而是仅仅在表面上模仿它们。这意味着你可以在任意平台上使用JAVA支持的任意面板。轻量级组件的缺点则是执行速度较慢,优点就是可以在所有平台上采用统一的行为。

2. Java Swing的结构

java swing 最大 java swing ui_子类

在javax.swing包中Swing类型一共有三种:顶层组件,中间组件,基本组件

java swing 最大 java swing ui_子类_02

  • 顶层组件:JFrame,JApplet,JDialog,JWindow

他是可以独立显示的组件,是一种Window组件

  • 中间容器类:JPanel,JScrollPane,JSplitPane,JToolBar

充当载体不能独立显示的组件。

  • 特殊中间容器类:JInternalFrame,JLayeredPane,JRootPane

具有特殊功能的载体

  • 基本组件类:JButton,JComboBox,JList,JMenu,JSlider,JTextField

依托在中间容器上才能显示的组件,不能独立存在

3. Java Swing HelloWorld

public class HelloWorld extends JFrame {
	private JPanel contentPane;

	public static void main(String[] args) {
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
					HelloWorld frame = new HelloWorld();
					frame.setVisible(true);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
	}

	public HelloWorld() {
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setBounds(100, 100, 450, 300);
		//创建一个中间容器面板JPanel
		contentPane = new JPanel();
		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
		contentPane.setLayout(new FlowLayout());
		setContentPane(contentPane);
		
		//添加一个按钮
		JButton jButton = new JButton("这是一个按钮");
		contentPane.add(jButton);
	}

}

运行结果:

java swing 最大 java swing ui_Swing_03

4. 使用IDE开发Java Swing

开发工具可以选择:

  • Eclipse

java swing 最大 java swing ui_子类_04

  • IDEA

java swing 最大 java swing ui_子类_05

5. Eclipse可视化开发插件WindowBuilder

WindowBuilder是一个Eclipse的可视化开发插件,它支持像Csharp一样使用拖拽方式开发GUI应用。

安装方式

java swing 最大 java swing ui_java swing 最大_06

搜索WindowBuilder然后安装即可

java swing 最大 java swing ui_子类_07

安装完成:

java swing 最大 java swing ui_Java_08

右键 -> new -> Other -> 新建一个JFrame

java swing 最大 java swing ui_Swing_09

创建完成:

java swing 最大 java swing ui_Swing_10

java swing 最大 java swing ui_子类_11

6. Java Swing的组件基础

java swing 最大 java swing ui_Java_12

6.1 Window类

  • JFrame:用于设计类似于Windows系统中窗口的应用程序
  • JDialog:用于设计对话框
  • JApplet:用于设计嵌入网页的小程序

顶层容器是所有组件的载体,是其能显示的必须的基础,每一个顶层容器同时包含有一个菜单组件和一个内容面板,以JFrame为例:

java swing 最大 java swing ui_Java_13

6.2 JComponet类

Swing组件不能直接添加到顶层容器中,他必须添加到一个与顶层容器相关联的面板中,也就是一个中间容器中。

6.2.1 JComponent类的子类

子类名称

说明

JButton

按钮

JTree


JComboBox

下拉选

JCheckBox

多选框

JFileChooser

文件选择器

JInternalFrame

内部窗体

JLabel

文本标签

JMenu

菜单

JMenuBar

菜单条

JPanel

面板

JPasswordField

密码框

JPopupMenu

弹出式菜单

JProgressBar

进度条

JScrollBar

滚动条

JTextArea

文本域

JTable

表格

JSplitPane

拆分窗格

JToolTip

工具提示

JToolBar

工具条

JTexPane

文本窗格

JRadioButton

单选框

JScrollPane

滚动窗格

JSlider

滚动条

6.2.2 JComponent的主要功能特性

java swing 最大 java swing ui_Java_14

例子:

  1. 工具提示:
public class Demo extends JFrame {

	private JPanel contentPane;

	public static void main(String[] args) {
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
					Demo frame = new Demo();
					frame.setVisible(true);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
	}

	public Demo() {
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setBounds(100, 100, 450, 300);
		contentPane = new JPanel();
		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
		setContentPane(contentPane);
		contentPane.setLayout(new FlowLayout(FlowLayout.CENTER, 5, 5));

		JButton button = new JButton("这是一个按钮");
		button.setToolTipText("这是按钮1..."); //设置提示
		contentPane.add(button);
	}

}

运行效果:

当把鼠标移动到按钮旁边时,会显示提示

java swing 最大 java swing ui_Swing_15