Java Swing(一)Swing初識
阿新 • • 發佈:2019-01-01
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的元件基礎
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的主要功能特性
例子:
- 工具提示:
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);
}
}
執行效果:
當把滑鼠移動到按鈕旁邊時,會顯示提示