1. 程式人生 > >Java Swing 介紹

Java Swing 介紹

Swing 是一個為Java設計的GUI工具包。

Swing是JAVA基礎類的一部分。

Swing包括了圖形使用者介面(GUI)器件如:文字框,按鈕,分隔窗格和表。

Swing提供許多比AWT更好的螢幕顯示元素。它們用純Java寫成,所以同Java本身一樣可以跨平臺執行,這一點不像AWT。它們是JFC的一部分。它們支援可更換的面板和主題(各種作業系統預設的特有主題),然而不是真的使用原生平臺提供的裝置,而是僅僅在表面上模仿它們。這意味著你可以在任意平臺上使用JAVA支援的任意麵板。輕量級元件的缺點則是執行速度較慢,優點就是可以在所有平臺上採用統一的行為。


Hello World 程式

HelloWorldSwing.java 檔案程式碼如下:

import javax.swing.*; public class HelloWorldSwing { /**{ * 建立並顯示GUI。出於執行緒安全的考慮, * 這個方法在事件呼叫執行緒中呼叫。 */ private static void createAndShowGUI() { // 確保一個漂亮的外觀風格 JFrame.setDefaultLookAndFeelDecorated(true); // 建立及設定視窗 JFrame frame = new JFrame("HelloWorldSwing"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // 新增 "Hello World" 標籤 JLabel label = new JLabel("Hello World"); frame.getContentPane().add(label); // 顯示視窗 frame.pack(); frame.setVisible(true); } public static void main(String[] args) { // 顯示應用 GUI javax.swing.SwingUtilities.invokeLater(new Runnable() { public void run() { createAndShowGUI(); } }); } }

執行以下命令輸出結果:

$ javac HelloWorldSwing.java
$ java HelloWorldSwing

一個使用者登入框例項

SwingLoginExample.java 檔案程式碼如下:

import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JPasswordField; import javax.swing.JTextField; public class SwingLoginExample { public static void main(String[] args) { // 建立 JFrame 例項 JFrame frame = new JFrame("Login Example"); // Setting the width and height of frame frame.setSize(350, 200); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); /* 建立面板,這個類似於 HTML 的 div 標籤 * 我們可以建立多個面板並在 JFrame 中指定位置 * 面板中我們可以新增文字欄位,按鈕及其他元件。 */ JPanel panel = new JPanel(); // 新增面板 frame.add(panel); /* * 呼叫使用者定義的方法並新增元件到面板 */ placeComponents(panel); // 設定介面可見 frame.setVisible(true); } private static void placeComponents(JPanel panel) { /* 佈局部分我們這邊不多做介紹 * 這邊設定佈局為 null */ panel.setLayout(null); // 建立 JLabel JLabel userLabel = new JLabel("User:"); /* 這個方法定義了元件的位置。 * setBounds(x, y, width, height) * x 和 y 指定左上角的新位置,由 width 和 height 指定新的大小。 */ userLabel.setBounds(10,20,80,25); panel.add(userLabel); /* * 建立文字域用於使用者輸入 */ JTextField userText = new JTextField(20); userText.setBounds(100,20,165,25); panel.add(userText); // 輸入密碼的文字域 JLabel passwordLabel = new JLabel("Password:"); passwordLabel.setBounds(10,50,80,25); panel.add(passwordLabel); /* *這個類似用於輸入的文字域 * 但是輸入的資訊會以點號代替,用於包含密碼的安全性 */ JPasswordField passwordText = new JPasswordField(20); passwordText.setBounds(100,50,165,25); panel.add(passwordText); // 建立登入按鈕 JButton loginButton = new JButton("login"); loginButton.setBounds(10, 80, 80, 25); panel.add(loginButton); } }

執行以下命令輸出結果:

$ javac SwingLoginExample.java
$ java SwingLoginExample

概念解析:

JFrame – java的GUI程式的基本思路是以JFrame為基礎,它是螢幕上window的物件,能夠最大化、最小化、關閉。

JPanel
– Java圖形使用者介面(GUI)工具包swing中的面板容器類,包含在javax.swing 包中,可以進行巢狀,功能是對窗體中具有相同邏輯功能的元件進行組合,是一種輕量級容器,可以加入到JFrame窗體中。。

JLabel – JLabel 物件可以顯示文字、影象或同時顯示二者。可以通過設定垂直和水平對齊方式,指定標籤顯示區中標籤內容在何處對齊。預設情況下,標籤在其顯示區內垂直居中對齊。預設情況下,只顯示文字的標籤是開始邊對齊;而只顯示影象的標籤則水平居中對齊。

JTextField –一個輕量級元件,它允許編輯單行文字。

JPasswordField – 允許我們輸入了一行字像輸入框,但隱藏星號(*) 或點建立密碼(密碼)

JButton – JButton 類的例項。用於建立按鈕類似例項中的 "Login"。