Java圖形用戶界面設(shè)計(Swing)的介紹
前言
Swing是一個用于開發(fā)Java應(yīng)用程序用戶界面的開發(fā)工具包。它以抽象窗口工具包(AWT)為基礎(chǔ)使跨平臺應(yīng)用程序可以使用任何可插拔的外觀風(fēng)格。Swing開發(fā)人員只用很少的代碼就可以利用Swing豐富、靈活的功能和模塊化組件來創(chuàng)建優(yōu)雅的用戶界面。
Swing 是一個為Java設(shè)計的GUI工具包。
Swing是JAVA基礎(chǔ)類的一部分。
Swing包括了圖形用戶界面(GUI)器件如:文本框,按鈕,分隔窗格和表。
Swing提供許多比AWT更好的屏幕顯示元素。它們用純Java寫成,所以同Java本身一樣可以跨平臺運(yùn)行,這一點(diǎn)不像AWT。它們是JFC的一部分。它們支持可更換的面板和主題(各種操作系統(tǒng)默認(rèn)的特有主題),然而不是真的使用原生平臺提供的設(shè)備,而是僅僅在表面上模仿它們。這意味著你可以在任意平臺上使用JAVA支持的任意面板。輕量級組件的缺點(diǎn)則是執(zhí)行速度較慢,優(yōu)點(diǎn)就是可以在所有平臺上采用統(tǒng)一的行為。
Hello World 程序
HelloWorldSwing.java 文件代碼如下:
import javax.swing.*;
public class HelloWorldSwing {
/**{
* 創(chuàng)建并顯示GUI。出于線程安全的考慮,
* 這個方法在事件調(diào)用線程中調(diào)用。
*/
private static void createAndShowGUI() {
// 確保一個漂亮的外觀風(fēng)格
JFrame.setDefaultLookAndFeelDecorated(true);
// 創(chuàng)建及設(shè)置窗口
JFrame frame = new JFrame("HelloWorldSwing");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// 添加 "Hello World" 標(biāo)簽
JLabel label = new JLabel("Hello World");
frame.getContentPane().add(label);
// 顯示窗口
frame.pack();
frame.setVisible(true);
}
public static void main(String[] args) {
// 顯示應(yīng)用 GUI
javax.swing.SwingUtilities.invokeLater(new Runnable() {
public void run() {
createAndShowGUI();
}
});
}
}
執(zhí)行以下命令輸出結(jié)果:
$ javac HelloWorldSwing.java $ java HelloWorldSwing

一個用戶登錄框?qū)嵗?/strong>
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) {
// 創(chuàng)建 JFrame 實(shí)例
JFrame frame = new JFrame("Login Example");
// Setting the width and height of frame
frame.setSize(350, 200);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
/* 創(chuàng)建面板,這個類似于 HTML 的 div 標(biāo)簽
* 我們可以創(chuàng)建多個面板并在 JFrame 中指定位置
* 面板中我們可以添加文本字段,按鈕及其他組件。
*/
JPanel panel = new JPanel();
// 添加面板
frame.add(panel);
/*
* 調(diào)用用戶定義的方法并添加組件到面板
*/
placeComponents(panel);
// 設(shè)置界面可見
frame.setVisible(true);
}
private static void placeComponents(JPanel panel) {
/* 布局部分我們這邊不多做介紹
* 這邊設(shè)置布局為 null
*/
panel.setLayout(null);
// 創(chuàng)建 JLabel
JLabel userLabel = new JLabel("User:");
/* 這個方法定義了組件的位置。
* setBounds(x, y, width, height)
* x 和 y 指定左上角的新位置,由 width 和 height 指定新的大小。
*/
userLabel.setBounds(10,20,80,25);
panel.add(userLabel);
/*
* 創(chuàng)建文本域用于用戶輸入
*/
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);
/*
*這個類似用于輸入的文本域
* 但是輸入的信息會以點(diǎn)號代替,用于包含密碼的安全性
*/
JPasswordField passwordText = new JPasswordField(20);
passwordText.setBounds(100,50,165,25);
panel.add(passwordText);
// 創(chuàng)建登錄按鈕
JButton loginButton = new JButton("login");
loginButton.setBounds(10, 80, 80, 25);
panel.add(loginButton);
}
}
執(zhí)行以下命令輸出結(jié)果:
$ javac SwingLoginExample.java $ java SwingLoginExample

概念解析:
JFrame – java的GUI程序的基本思路是以JFrame為基礎(chǔ),它是屏幕上window的對象,能夠最大化、最小化、關(guān)閉。
JPanel – Java圖形用戶界面(GUI)工具包swing中的面板容器類,包含在javax.swing 包中,可以進(jìn)行嵌套,功能是對窗體中具有相同邏輯功能的組件進(jìn)行組合,是一種輕量級容器,可以加入到JFrame窗體中。。
JLabel – JLabel 對象可以顯示文本、圖像或同時顯示二者。可以通過設(shè)置垂直和水平對齊方式,指定標(biāo)簽顯示區(qū)中標(biāo)簽內(nèi)容在何處對齊。默認(rèn)情況下,標(biāo)簽在其顯示區(qū)內(nèi)垂直居中對齊。默認(rèn)情況下,只顯示文本的標(biāo)簽是開始邊對齊;而只顯示圖像的標(biāo)簽則水平居中對齊。
JTextField –一個輕量級組件,它允許編輯單行文本。
JPasswordField – 允許我們輸入了一行字像輸入框,但隱藏星號(*) 或點(diǎn)創(chuàng)建密碼(密碼)
JButton – JButton 類的實(shí)例。用于創(chuàng)建按鈕類似實(shí)例中的 "Login"。
好了,到這本文就告一段落了。這里說的都是初級知識,有此基礎(chǔ),設(shè)計復(fù)雜一點(diǎn)的圖形用戶界面也就不是難事了!
相關(guān)文章
解決weblogic部署springboot項目步驟及可能會出現(xiàn)的問題
這篇文章主要介紹了解決weblogic部署springboot項目步驟及可能會出現(xiàn)的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-07-07
解析Java實(shí)現(xiàn)隨機(jī)驗(yàn)證碼功能的方法詳解
本篇文章是對Java實(shí)現(xiàn)隨機(jī)驗(yàn)證碼功能的方法進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-05-05
SpringBoot實(shí)現(xiàn)本地文件存儲及預(yù)覽過程
這篇文章主要介紹了SpringBoot實(shí)現(xiàn)本地文件存儲及預(yù)覽過程,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-11-11
IDEA下Maven的pom文件導(dǎo)入依賴出現(xiàn)Auto build completed with errors的問題
這篇文章主要介紹了IDEA下Maven的pom文件導(dǎo)入依賴出現(xiàn)Auto build completed with errors,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-06-06
java中使用session監(jiān)聽實(shí)現(xiàn)同帳號登錄限制、登錄人數(shù)限制
本文主要介紹了java中使用session監(jiān)聽實(shí)現(xiàn)同帳號登錄限制、登錄人數(shù)限制,通過session來監(jiān)聽在線人數(shù)和登陸限制,有需要的童鞋可以了解一下。2016-10-10

