Swing 是一個爲Java設計的GUI工具包。java
Swing是JAVA基礎類的一部分。安全
Swing包括了圖形用戶界面(GUI)器件如:文本框,按鈕,分隔窗格和表。工具
Swing提供許多比AWT更好的屏幕顯示元素。它們用純Java寫成,因此同Java自己同樣能夠跨平臺運行,這一點不像AWT。它們是JFC的一部分。它們支持可更換的面板和主題(各類操做系統默認的特有主題),然而不是真的使用原平生臺提供的設備,而是僅僅在表面上模仿它們。這意味着你能夠在任意平臺上使用JAVA支持的任意麪板。輕量級組件的缺點則是執行速度較慢,優勢就是能夠在全部平臺上採用統一的行爲。佈局
HelloWorldSwing.java 文件代碼以下:spa
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