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框架只需 ...
随机推荐
- F数圈圈
Description 幼儿园的小朋友对数字其实不是很感兴趣,他们更感兴趣的是形状,现在给你一个数字,小朋友都会数出其中一共有多少圆圈圈 Input 一个数字n长度不超过19位 Output 输出其中 ...
- Java动态代理学习【Spring AOP基础之一】
Spring AOP使用的其中一个底层技术就是Java的动态代理技术.Java的动态代理技术主要围绕两个类进行的 java.lang.reflect.InvocationHandler java.la ...
- Redis-入门笔记-15min带你一览redis
如果转载,请注明博文来源: www.cnblogs.com/xinysu/ ,版权归 博客园 苏家小萝卜 所有.望各位支持! 少年入门笔记,整理出来一起入坑!入门的视屏 ...
- Linux - 简明Shell编程15 - 调试(Debug)
脚本地址 https://github.com/anliven/L-Shell/tree/master/Shell-Basics 示例脚本及注释 #!/bin/bash -x for filename ...
- 推荐——基于python
资料来源: <集体智慧编程>&网络 一.推荐系统 概述 定义 维基百科定义: 推荐系统属于资讯过滤的一种应用. 推荐系统能够将可能受喜好的资讯或实物(例如:电影.电视节目.音乐.书 ...
- OpenStack(企业私有云)万里长征第六步——OpenStack网络及虚拟机存储位置
一.前言 昨天又装了一遍OpenStack.码农这项工作就如同人生,永远有你想不到的意外在等着你,时而是惊喜时而是悲伤.在装的过程中倒是很顺利,只是在安装完成之后碰到了两个之前没有碰到的问题,这里记录 ...
- phpexcel导入excel处理大数据
先下载对应phpExcel 的包就行了https://github.com/PHPOffice/PHPExcel下载完成 把那个Classes 这个文件夹里面的 文件跟文件夹拿出来就好了.直接写到PH ...
- 物体自由落体动态模拟(Linear Subspace)
三维物体变形方法赋予了模拟物体的动态特性,但是随着物体模型的复杂度慢慢增加,对高质量的实时变形方法也提出了更高的要求.对于高精度的大型三维网格而言,通常会设计一个低精度的子网格,并构建子网格与原始网格 ...
- EasyUI Datagrid 鼠标悬停显示单元格内容 复制代码
EasyUI Datagrid 鼠标悬停显示单元格内容 ,halign:, align: 0 « 上一篇:LINQ to Entities 中的查询» 下一篇:去掉字符串中的非数字字符 posted ...
- [日推荐] 『Streeter』极乐商店邀你一起来尬舞啊!-store.dreawer.com
你听的舞蹈有哪些?Jazz?Poppin?Hiphop?现代舞?民族舞?... 今天推荐一款小程序『Streeter』,几乎包含所有舞蹈视频,偷偷学好了,邀请你来尬舞啊 Streeter 这个Logo ...