天天看點

Java Swing 圖形界面開發簡介1. Swing簡介2. Swing元件3. 布局管理器4. 代碼執行個體: 一個簡單的視窗程式

本文連結: http://blog.csdn.net/xietansheng/article/details/72814531

Java Swing GUI 圖形界面視窗開發基礎教程,本教程将系統性地詳細介紹 Java Swing 開發中常用的一些元件、布局管理器等相關知識技術,并且每章節都将通過代碼執行個體展示實際應用。

教程總目錄: Java Swing 圖形界面開發(目錄)

1. Swing簡介

Swing 是 Java 為圖形界面應用開發提供的一組工具包,是 Java 基礎類的一部分。

Swing 包含了建構圖形界面(GUI)的各種元件,如: 視窗、标簽、按鈕、文本框等。

Swing 提供了許多比 AWT 更好的螢幕顯示元素,使用純 Java 實作,能夠更好的相容跨平台運作。

為了和 AWT 元件區分,Swing 元件在

javax.swing.*

包下,類名均以 J 開頭,例如: JFrame、JLabel、JButton等。

2. Swing元件

一個 Java 的圖形界面,由各種不同類型的“元素”組成,例如: 視窗、菜單欄、對話框、标簽、按鈕、文本框等等,這些“元素”統一被稱為 元件(

Component

)。

元件按照不同的功能,可分為 頂層容器、中間容器、基本元件。一個簡單視窗的組成,如下層級結構所示:

  • 頂層容器
    • 菜單欄
    • 中間容器
      • 基本元件
      • 基本元件

元件類型的繼承關系:

  • 頂層容器 屬于視窗類元件,繼承自

    java.awt.Window

  • 中間容器 和 基本元件 繼承自

    javax.swing.JComponent

2.1 頂層容器

頂層容器屬于視窗類元件,可以獨立顯示,一個圖形界面至少需要一個視窗,例如:

# 元件 描述
1 JFrame 一個普通的視窗(絕大多數 Swing 圖形界面程式使用 JFrame 作為頂層容器)
2 JDialog 對話框

2.2 中間容器

中間容器充當基本元件的載體,不可獨立顯示。中間容器可以添加若幹基本元件(也可以嵌套添加中間容器),對容器内的元件進行管理,類似于給各種複雜的元件進行分組管理。最頂層的一個中間容器必須依托在頂層容器(視窗)内。

常用的中間容器(面闆):

# 元件 描述
1 JPanel 一般輕量級面闆容器元件
2 JScrollPane 帶滾動條的,可以水準和垂直滾動的面闆元件
3 JSplitPane 分隔面闆
4 JTabbedPane 頁籤面闆
5 JLayeredPane 層級面闆

特殊的中間容器:

# 元件 描述
1 JMenuBar 菜單欄
2 JToolBar 工具欄
3 JPopupMenu 彈出菜單
4 JInternalFrame 内部視窗

2.3 基本元件

基本元件是直接實作人機互動的元件。

常用的簡單的基本元件:

# 元件 描述
1 JLabel 标簽
2 JButton 按鈕
3 JRadioButton 單選按鈕
4 JCheckBox 複選框
5 JToggleButton 開關按鈕
6 JTextField 文本框
7 JPasswordField 密碼框
8 JTextArea 文本區域
9 JComboBox 下拉清單框
10 JList 清單
11 JProgressBar 進度條
12 JSlider 滑塊

選取器元件:

# 元件 描述
1 JFileChooser 檔案選取器
2 JColorChooser 顔色選取器

其他較為複雜的基本元件:

# 元件 描述
1 JTable 表格
2 JTree

3. 布局管理器

Swing

的各種元件(

JComponent

)添加到面闆容器中(

JPanel

),需要給面闆容器指定布局管理器(

LayoutManager

),明确容器(

Container

)内的各個元件之間的排列布局方式。

常用的布局管理器:

# 布局管理器 描述
1 FlowLayout 流式布局,按元件加入的順序,按水準方向排列,排滿一行換下一行繼續排列。
2 GridLayout 網格布局,把

Container

按指定行列數分隔出若幹網格,每一個網格按順序放置一個控件。
3 GridBagLayout 網格袋布局,按網格劃分

Container

,每個元件可占用一個或多個網格,可将元件垂直、水準或沿它們的基線對齊。
4 BoxLayout 箱式布局,将

Container

中的多個元件按 水準 或 垂直 的方式排列。
5 GroupLayout 分組布局,将元件按層次分組(串行 或 并行),分别确定 元件組 在 水準 和 垂直 方向上的位置。
6 CardLayout 卡片布局,将

Container

中的每個元件看作一張卡片,一次隻能顯示一張卡片,預設顯示第一張卡片。
7 BorderLayout 邊界布局,把

Container

按方位分為 5 個區域(東、西、南、北、中),每個區域放置一個元件。
8 SpringLayout 彈性布局,通過定義元件四條邊的坐标位置來實作布局。
9 null 絕對布局,通過設定元件在

Container

中的坐标位置來放置元件。

4. 代碼執行個體: 一個簡單的視窗程式

package com.xiets.swing;

import javax.swing.*;

public class Main {

    public static void main(String[] args) {
        // 1. 建立一個頂層容器(視窗)
        JFrame jf = new JFrame("測試視窗");          // 建立視窗
        jf.setSize(250, 250);                       // 設定視窗大小
        jf.setLocationRelativeTo(null);             // 把視窗位置設定到螢幕中心
        jf.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); // 當點選視窗的關閉按鈕時退出程式(沒有這一句,程式不會退出)

        // 2. 建立中間容器(面闆容器)
        JPanel panel = new JPanel();                // 建立面闆容器,使用預設的布局管理器

        // 3. 建立一個基本元件(按鈕),并添加到 面闆容器 中
        JButton btn = new JButton("測試按鈕");
        panel.add(btn);

        // 4. 把 面闆容器 作為視窗的内容面闆 設定到 視窗
        jf.setContentPane(panel);

        // 5. 顯示視窗,前面建立的資訊都在記憶體中,通過 jf.setVisible(true) 把記憶體中的視窗顯示在螢幕上。
        jf.setVisible(true);
    }

}
           

結果展示:

Java Swing 圖形界面開發簡介1. Swing簡介2. Swing元件3. 布局管理器4. 代碼執行個體: 一個簡單的視窗程式