1. 程式人生 > >Java Swing(一)Swing初識

Java Swing(一)Swing初識

Swing初識

參考資料
[1]王鵬,何昀峰.JavaSwing圖形介面開發與案例詳解[M].北京:清華大學出版社,2008:407.

文章目錄

1. 什麼是Java Swing

  • Swing 是一個為Java設計的GUI工具包。
  • Swing是JAVA基礎類的一部分。
  • Swing包括了圖形使用者介面(GUI)器件如:文字框,按鈕,分隔窗格和表。
  • Swing提供許多比AWT更好的螢幕顯示元素。它們用純Java寫成,所以同Java本身一樣可以跨平臺執行,這一點不像AWT。它們是JFC的一部分。它們支援可更換的面板和主題(各種作業系統預設的特有主題),然而不是真的使用原生平臺提供的裝置,而是僅僅在表面上模仿它們。這意味著你可以在任意平臺上使用JAVA支援的任意麵板。輕量級元件的缺點則是執行速度較慢,優點就是可以在所有平臺上採用統一的行為。

2. Java Swing的結構

在這裡插入圖片描述

在javax.swing包中Swing型別一共有三種:頂層元件,中間元件,基本元件

在這裡插入圖片描述

  • 頂層元件: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);
	}

}

執行結果:

在這裡插入圖片描述

4. 使用IDE開發Java Swing

開發工具可以選擇:

  • Eclipse

在這裡插入圖片描述

  • IDEA

在這裡插入圖片描述

5. Eclipse視覺化開發外掛WindowBuilder

WindowBuilder是一個Eclipse的視覺化開發外掛,它支援像Csharp一樣使用拖拽方式開發GUI應用。

安裝方式

在這裡插入圖片描述

搜尋WindowBuilder然後安裝即可

在這裡插入圖片描述

安裝完成:

在這裡插入圖片描述

右鍵 -> new -> Other -> 新建一個JFrame

在這裡插入圖片描述

建立完成:

在這裡插入圖片描述

在這裡插入圖片描述

6. Java Swing的元件基礎

在這裡插入圖片描述

6.1 Window類

  • JFrame:用於設計類似於Windows系統中視窗的應用程式

  • JDialog:用於設計對話方塊

  • JApplet:用於設計嵌入網頁的小程式

頂層容器是所有元件的載體,是其能顯示的必須的基礎,每一個頂層容器同時包含有一個選單元件和一個內容面板,以JFrame為例:

在這裡插入圖片描述

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的主要功能特性

在這裡插入圖片描述

例子:

  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);
	}

}

執行效果:

當把滑鼠移動到按鈕旁邊時,會顯示提示

在這裡插入圖片描述