Java Swing中JDialog實現(xiàn)用戶登陸UI示例
本文實例講述了Java Swing中JDialog實現(xiàn)用戶登陸UI。分享給大家供大家參考,具體如下:
JDialog是一種對話框組件,它常常與JOptionPane配合使用。JOptionPane提供對話框內(nèi)部的消息、按鈕等內(nèi)容,JDialog提供對話框窗體,提供模態(tài)/非模態(tài)等屬性。JDialog與JFrame在外觀上的區(qū)別在于,它沒有最大化/最小化按鈕。如下圖所示:

JDialog窗體
點擊File-》connect之后彈出登陸窗口:

JFrame窗體
在下面的demo中,演示了JDialog構(gòu)造登錄窗體,以及從窗體中獲得數(shù)據(jù)的方法。
LoginDemoStart.java
package awtDemo;
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
/*
* @功能:使用JDialog構(gòu)造登陸對話框,并獲取登陸用戶信息
* @版本:20150804
* @結(jié)構(gòu):LoginDemoStart[主類,提供初始UI],PasswordChooser[提供登陸UI并獲取用戶信息],User[保存用戶信息]
*/
@SuppressWarnings("serial")
class LoginDemoStart extends JFrame{
/*
* @功能:提供初始UI,并調(diào)用PasswordChooser登陸界面
* @版本:20150804
*/
private JTextArea textArea;
private PasswordChooser passwordChooser ;
public LoginDemoStart(){
//構(gòu)造菜單欄
JMenuBar mbar = new JMenuBar();
setJMenuBar(mbar);
JMenu fileMenu = new JMenu("File");
JMenuItem connectItem = new JMenuItem("connect");
connectItem.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
//if 1st time,construct a dialog
passwordChooser = new PasswordChooser(LoginDemoStart.this);
passwordChooser.setVisible(true);
if(passwordChooser.isLogedIn())
{
User u = passwordChooser.getUser();
textArea.append("Username = " + u.getName() + ", Password = " + new String(u.getPassword()) + "\n");
}
}
});
JMenuItem exitItem = new JMenuItem("exit");
exitItem.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
System.exit(0);
}
});
mbar.add(fileMenu);
fileMenu.add(connectItem);
fileMenu.add(exitItem);
//添加文本區(qū)域
textArea = new JTextArea();
add(new JScrollPane(textArea), BorderLayout.CENTER);
//設(shè)置窗體屬性
setTitle("LoginDemoStart - chabaoo.cn");
setSize(300,200);
setLocationRelativeTo(null);
}
public static void main(String[] args) {
// TODO Auto-generated method stub
LoginDemoStart loginDemoStart = new LoginDemoStart();
loginDemoStart.setVisible(true);
}
}
PasswordChooser.java
package awtDemo;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
/*
* @功能:提供登陸UI并獲取用戶信息
* @版本:20150804
*/
@SuppressWarnings("serial")
class PasswordChooser extends JDialog{
private JTextField username ;
private JPasswordField password ;
private JButton okButton ;
private JButton cancelButton ;
private boolean isLogedIn = false;
public PasswordChooser(Frame parent){
super(parent, true);
//本UI包含2個panel
JPanel inputPanel = new JPanel();
JPanel buttonPanel = new JPanel();
//構(gòu)造inputPanel
inputPanel.setLayout(new GridLayout(2,2));
inputPanel.add(new JLabel("Useername:"));
username = new JTextField();
username.setColumns(10);
password = new JPasswordField();
password.setColumns(10);
inputPanel.add(username);
inputPanel.add(new JLabel("Password:"));
inputPanel.add(password);
inputPanel.setBorder(BorderFactory.createEmptyBorder(10, 5, 10, 5));
//構(gòu)造buttonPanel
okButton = new JButton("OK");
okButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
isLogedIn = true;
setVisible(false);
}
});
cancelButton = new JButton("Cancel");
cancelButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
setVisible(false);
}
});
buttonPanel.add(okButton);
buttonPanel.add(cancelButton);
buttonPanel.setBorder(BorderFactory.createEmptyBorder(10, 5, 10, 5));
//構(gòu)造主框架
setLayout(new BorderLayout());
getContentPane().add(inputPanel, BorderLayout.NORTH);
getContentPane().add(buttonPanel, BorderLayout.SOUTH);
//設(shè)置窗體屬性
setTitle("PasswordChooser - chabaoo.cn");
setLocationRelativeTo(inputPanel);
//setPreferredSize(new Dimension(300, 200));
pack();
//System.out.println(getPreferredSize());
}
public void setUser(User u){
username.setText(u.getName());
}
public User getUser(){
return new User(username.getText(), password.getPassword());
}
public boolean isLogedIn(){
return isLogedIn;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
}
}
User.java
package awtDemo;
/*
* @功能:保存用戶信息
* @版本:20150804
*/
class User{
private String name;
private char[] password;
public User(String aName, char[] aPassword){
name = aName;
password = aPassword;
}
public String getName(){
return name;
}
public char[] getPassword(){
return password;
}
public void setName(String aName){
name = aName;
}
public void setPassword(char[] aPassword){
password = aPassword;
}
}
更多關(guān)于java相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Java數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Java字符與字符串操作技巧總結(jié)》、《Java操作DOM節(jié)點技巧總結(jié)》、《Java文件與目錄操作技巧匯總》和《Java緩存操作技巧匯總》
希望本文所述對大家java程序設(shè)計有所幫助。
- java模擬cookie登陸操作
- cookie、session和java過濾器結(jié)合實現(xiàn)登陸程序
- JAVA實現(xiàn)簡單系統(tǒng)登陸注冊模塊
- JavaWeb登陸功能實現(xiàn)代碼
- JAVA簡單鏈接Oracle數(shù)據(jù)庫 注冊和登陸功能的實現(xiàn)代碼
- java shiro實現(xiàn)退出登陸清空緩存
- JavaWeb基于Session實現(xiàn)的用戶登陸注銷方法示例
- Java Web實現(xiàn)session過期后自動跳轉(zhuǎn)到登陸頁功能【基于過濾器】
- java客戶端登陸服務(wù)器用戶名驗證
- Java Web開發(fā)過程中登陸模塊的驗證碼的實現(xiàn)方式總結(jié)
- Java 模擬cookie登陸簡單操作示例
相關(guān)文章
Java如何使用httpclient檢測url狀態(tài)及鏈接是否能打開
這篇文章主要介紹了Java如何使用httpclient檢測url狀態(tài)及鏈接是否能打開,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-09-09
Java中Stream的flatMap與map使用場景及區(qū)別詳解
這篇文章主要介紹了Java中Stream的flatMap與map使用場景及區(qū)別詳解,Stream 流式操作,一般用于操作集合即 List 一類的數(shù)據(jù)結(jié)構(gòu),簡單來說 Stream 的 map 使得其中的元素轉(zhuǎn)為另一種元素的映射(map)方法,需要的朋友可以參考下2024-01-01
Mybatis中兼容多數(shù)據(jù)源的databaseId(databaseIdProvider)的簡單使用方法
本文主要介紹了Mybatis中兼容多數(shù)據(jù)源的databaseId(databaseIdProvider)的簡單使用方法,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2024-07-07
Redisson分布式信號量RSemaphore的使用超詳細講解
這篇文章主要介紹了Redisson分布式信號量RSemaphore的使用,基于Redis的Redisson的分布式信號量RSemaphore采用了與java.util.concurrent.Semaphore相似的接口和用法2023-02-02
Java如何優(yōu)雅實現(xiàn)數(shù)組切片和拼接操作
在做一道算法題的時候用到數(shù)組合并,并且有性能要求,這里對Java數(shù)組合并進行總結(jié),下面這篇文章主要給大家介紹了關(guān)于Java如何優(yōu)雅實現(xiàn)數(shù)組切片和拼接操作的相關(guān)資料,需要的朋友可以參考下2024-04-04

