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

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

JFrame窗體
在下面的demo中,演示了JDialog構造登錄窗體,以及從窗體中獲得數(shù)據(jù)的方法。
LoginDemoStart.java
package awtDemo;
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
/*
* @功能:使用JDialog構造登陸對話框,并獲取登陸用戶信息
* @版本:20150804
* @結構:LoginDemoStart[主類,提供初始UI],PasswordChooser[提供登陸UI并獲取用戶信息],User[保存用戶信息]
*/
@SuppressWarnings("serial")
class LoginDemoStart extends JFrame{
/*
* @功能:提供初始UI,并調用PasswordChooser登陸界面
* @版本:20150804
*/
private JTextArea textArea;
private PasswordChooser passwordChooser ;
public LoginDemoStart(){
//構造菜單欄
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);
//設置窗體屬性
setTitle("LoginDemoStart - www.fzitv.net");
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();
//構造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));
//構造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));
//構造主框架
setLayout(new BorderLayout());
getContentPane().add(inputPanel, BorderLayout.NORTH);
getContentPane().add(buttonPanel, BorderLayout.SOUTH);
//設置窗體屬性
setTitle("PasswordChooser - www.fzitv.net");
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;
}
}
更多關于java相關內容感興趣的讀者可查看本站專題:《Java數(shù)據(jù)結構與算法教程》、《Java字符與字符串操作技巧總結》、《Java操作DOM節(jié)點技巧總結》、《Java文件與目錄操作技巧匯總》和《Java緩存操作技巧匯總》
希望本文所述對大家java程序設計有所幫助。
- java模擬cookie登陸操作
- cookie、session和java過濾器結合實現(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過期后自動跳轉到登陸頁功能【基于過濾器】
- java客戶端登陸服務器用戶名驗證
- Java Web開發(fā)過程中登陸模塊的驗證碼的實現(xiàn)方式總結
- Java 模擬cookie登陸簡單操作示例
相關文章
springboot整合阿里云百煉DeepSeek實現(xiàn)sse流式打印的操作方法
這篇文章主要介紹了springboot整合阿里云百煉DeepSeek實現(xiàn)sse流式打印,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2025-04-04
spring boot2.0圖片上傳至本地或服務器并配置虛擬路徑的方法
最近寫了關于圖片上傳至本地文件夾或服務器,上傳路徑到數(shù)據(jù)庫,并在上傳時預覽圖片。本文通過實例代碼給大家分享spring boot2.0圖片上傳至本地或服務器并配置虛擬路徑的方法,需要的朋友參考下2018-12-12
java多線程事務加鎖引發(fā)bug用戶重復注冊解決分析
這篇文章主要為大家介紹了java多線程事務加鎖引發(fā)bug用戶重復注冊解決分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-11-11
jpa多條件查詢重寫Specification的toPredicate方法
這篇文章主要介紹了多條件查詢重寫Specification的toPredicate方法,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-11-11

