Swing-JDialog示例代码-用户登陆UI
JDialog是一种对话框组件,它常常与JOptionPane配合使用。JOptionPane提供对话框内部的消息、按钮等内容,JDialog提供对话框窗体,提供模态/非模态等属性。JDialog与JFrame在外观上的区别在于,它没有最大化/最小化按钮。如下图所示:

JDialog窗体

JFrame窗体
在下面的demo中,演示了JDialog构造登录窗体,以及从窗体中获得数据的方法。
LoginDemoStart.java
package LoginDemo; import java.awt.BorderLayout;
import java.awt.EventQueue;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener; import javax.swing.*; /*
* @功能:使用JDialog构造登陆对话框,并获取登陆用户信息
* @版本:20150804
* @结构:LoginDemoStart[主类,提供初始UI],PasswordChooser[提供登陆UI并获取用户信息],User[保存用户信息]
*/
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); //添加文本区域
textArea = new JTextArea();
add(new JScrollPane(textArea), BorderLayout.CENTER); //设置窗体属性
setTitle("LoginDemoStart");
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 LoginDemo; import java.awt.*;
import java.awt.event.*;
import javax.swing.*; /*
* @功能:提供登陆UI并获取用户信息
* @版本:20150804
*/
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");
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 LoginDemo; /*
* @功能:保存用户信息
* @版本: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;
}
}
Swing-JDialog示例代码-用户登陆UI的更多相关文章
- QQ互联OAuth2.0 .NET SDK 发布以及网站QQ登陆示例代码(转)
OAuth: OAuth(开放授权)是一个开放标准,允许用户授权第三方网站访问他们存储在另外的服务提供者上的信息,而不需要将用户名和密码提供给第三方网站或分享他们数据的所有内容. QQ登录OAuth2 ...
- QQ互联OAuth2.0 .NET SDK 发布以及网站QQ登陆示例代码
OAuth: OAuth(开放授权)是一个开放标准,允许用户授权第三方网站访问他们存储在另外的服务提供者上的信息,而不需要将用户名和密码提供给第三方网站或分享他们数据的所有内容. QQ登录OAuth2 ...
- 介绍一款jquery ui组件gijgo(含tree树状结构、grid表格),特点:简易、文档全清晰易懂、示例代码
http://gijgo.com gijgo组件 特点:简易.文档全-虽然是英文的但是清晰易懂可读性强.含示例代码(后端直接用原生.Net C# MVC的哦!非常合.Net开发胃口),网站网速快, ...
- 【译】用Fragment创建动态的界面布局(附Android示例代码)
原文链接:Building a Dynamic UI with Fragments 为了在Android上创建一个动态和多视图的用户界面,你需要封装UI控件和模块化Activity的行为,以便于你能够 ...
- 使用XML布局文件和Java代码混合控制UI界面
完全使用Java代码来控制UI界面不仅烦琐.而且不利于解耦:而完全利用XML布局文件来控制UI界面虽然方便.便捷,但难免有失灵活.因此有些时候,可能需要混合使用XML布局文件和代码来控制UI界面. 当 ...
- 基于gin框架和jwt-go中间件实现小程序用户登陆和token验证
本文核心内容是利用jwt-go中间件来开发golang webapi用户登陆模块的token下发和验证,小程序登陆功能只是一个切入点,这套逻辑同样适用于其他客户端的登陆处理. 小程序登陆逻辑 小程序的 ...
- 三层架构下实现用户登陆C#
上篇文章讲到三层.接下来就通过一个实例详细的看怎么用三层实现用户登陆界面. 一.Model实体(LoginModel): namespace LoginModel { //加入类:UserInfo M ...
- Spring MVC - 拦截器实现 和 用户登陆例子
1.拦截器 SpringMvc中的拦截器实现了HandlerInterceptor接口,通常使用与身份认证,授权和校验,模板视图,统一处理等: public class HanderIntercept ...
- uni-app结合PHP实现单用户登陆
单用户登陆,即在一个应用中,同一个用户只能在线登陆一个,一个用户登陆,在其他设备上会被即时挤下线,确认后清空登陆该设备上的登陆装填并退回到登陆界面. uni-app是目前能通过使用vue.js框架只需 ...
随机推荐
- Java入门——(4)多线程
关键词:线程.Thread.Runnable.sleep().yield().join().同步 一.线程的概述 在一个操作系统中,每个独立执行的程序都可以称为一个进程,也就是"正在 ...
- shell 字符串
字符串可以分为单引号,双引号,也可以不用引号 单引号 str='this is string' 单引号字符的限制: 单引号中的任何字符都会原样输出,单引号中变量是无效的 单引号中不能出现单引号 双引号 ...
- 【社交系统研发日记五】ThinkSNS+如何计算字符显示长度?
今天我们来聊一下可能很多人都会头疼的东西:显示长度. 需求是这样的,在字符的显示上,两个英文单词才占一个中文或者其他语言的显示长度.如下: 上面排的是两个英文字母,一个汉字,一个Emoji.你会发现, ...
- DB2 执行SQL脚本
今天有网友问到这个问题,平时也没怎么留意.刚刚做了测试在db2的SQL脚本中,直接写命令就好了. 例如: [db2inst1@win backups]$ cat test.ddl ---------- ...
- OpenCV探索之路(二十三):特征检测和特征匹配方法汇总
一幅图像中总存在着其独特的像素点,这些点我们可以认为就是这幅图像的特征,成为特征点.计算机视觉领域中的很重要的图像特征匹配就是一特征点为基础而进行的,所以,如何定义和找出一幅图像中的特征点就非常重要. ...
- PYQT4 : QSystemTrayIcon练习
照着demo自己做了一遍,练练手 import sys from PyQt4 import QtGui from PyQt4 import QtCore class SysTray(QtGui.QDi ...
- 部署和使用kibana
背景 上一篇介绍了在阿里云上部署ES,本文将主要介绍ELK的可视化工具Kibana的部署和使用.主要分为三个步骤来实现最终呈现: 1.导入数据到ES: 2.部署kibana并完成配置: 3.使用kib ...
- python 三级联动
china_map ={ "华南":{ "广东":["广州市","佛山市","深圳市", ...
- Spring4整合quartz2.2.3,quartz动态任务
Spring4整合quartz2.2.3,quartz动态任务 >>>>>>>>>>>>>>>>> ...
- 格式化JSON字符串
提出需求 异步调用获取JSON数据时非常不直观,每次都需要格式化一次,才能直观的看到数据集合的结构,现在需要实现输出带缩进的格式. 实现效果 在浏览器的查看源文件中已经实现格式化,如果是页面使用,可以 ...