前言
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
一個使用者登入框實例
SwingLogin.執行以下指令輸出結果:
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); } }
概念解析:
JFrame – java的GUI程式的基本想法是以JFrame為基礎,它是螢幕上window的對象,能夠最大化、最小化、關閉。 JPanel – Java圖形使用者介面(GUI)工具包swing中的面板容器類,包含在javax.swing 包中,可以進行嵌套,功能是對窗體中具有相同邏輯功能的組件進行組合,是一種輕量級容器,可以加入JFrame窗體。 。JLabel – JLabel 物件可以顯示文字、圖像或同時顯示二者。可以透過設定垂直和水平對齊方式,指定標籤顯示區中標籤內容在何處對齊。預設情況下,標籤在其顯示區內垂直居中對齊。預設情況下,只顯示文字的標籤是開始邊對齊;而只顯示圖像的標籤則水平居中對齊。
JTextField –一個輕量級元件,它允許編輯單行文字。
JButton – JButton 類別的實例。用於建立按鈕類似實例中的 "Login"。
好了,到這本文就告一段落了。這裡說的都是初級知識,有此基礎,設計複雜一點的圖形使用者介面也就不是難事了!
更多Java圖形使用者介面設計(Swing)的介紹相關文章請關注PHP中文網!