前言
Swing是一個用於開發Java應用程序用戶界面的開發工具包。它以抽象窗口工具包(AWT)為基礎使跨平台應用程序可以使用任何可插拔的外觀風格。 Swing開發人員只用很少的代碼就可以利用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"。
好了,到這本文就告一段落了。這裡說的都是初級知識,有此基礎,設計複雜一點的圖形用戶界面也就不是難事了!