Java Swing中JDialog实现用户登陆UI示例
作者:pzy4447 发布时间:2021-10-12 13:58:00
标签:Java,Swing,JDialog
本文实例讲述了Java Swing中JDialog实现用户登陆UI。分享给大家供大家参考,具体如下:
JDialog是一种对话框组件,它常常与JOptionPane配合使用。JOptionPane提供对话框内部的消息、按钮等内容,JDialog提供对话框窗体,提供模态/非模态等属性。JDialog与JFrame在外观上的区别在于,它没有最大化/最小化按钮。如下图所示:
JDialog窗体
点击File-》connect之后弹出登陆窗口:
JFrame窗体
在下面的demo中,演示了JDialog构造登录窗体,以及从窗体中获得数据的方法。
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);
//添加文本区域
textArea = new JTextArea();
add(new JScrollPane(textArea), BorderLayout.CENTER);
//设置窗体属性
setTitle("LoginDemoStart - www.jb51.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.jb51.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程序设计有所帮助。
来源:http://www.cnblogs.com/pzy4447/p/4701753.html


猜你喜欢
- spring boot 秉承约定优于配置,spring boot在静态资源的处理上就已经默认做了处理。1.默认资源映射映射”/**”的路径到
- 本文实例讲述了java实现的DES加密算法。分享给大家供大家参考,具体如下:一、DES加密算法介绍1、要求密钥必须是8个字节,即64bit长
- OAuth 简介OAuth 是由 Blaine Cook、Chris Messina、Larry Halff 及 David Recordo
- 一、多线程的优缺点多线程的优点:1)资源利用率更好2)程序设计在某些情况下更简单3)程序响应更快多线程的代价:1)设计更复杂虽然有一些多线程
- 一、需求C#种的下拉框ComboBox不支持下拉复选框列表与下拉树形列表等,系统中需要用到的地方使用了第三方组件,现在需要将第三方组件替换掉
- File类概述File类能新建、删除、重命名文件和目录,但不能访问文件内容本身,如果需要访问文件内容本身,则需要使用后续的输入/输出流。要在
- 给对象中的包装类设置默认值处理方法如下主要适用于,对象中使用了包装类,但是不能给null需要有默认值的情况/**
- 实例如下:package com.bwsk.modules.weixin.util;import java.util.Random;/**
- 先看一段同步代码:public int SumPageSizes(IList<Uri> uris) {
- Android Studio配置Kotlin开发环境详细步骤第一步:安装Kotlin插件打开Settings面板,找到Plugins选项,点
- 1.需要的Maven依赖// 支付宝<dependency> <groupId>com.alipay.
- 这篇文章主要介绍了Spring Cloud基于zuul实现网关过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学
- MyBatis源码解析_获取SqlSessionFactory我们都知道,在Mybatis中,对数据库的增删改查,实际上是由SqlSessi
- Spring的注解@Qualifier小结近期在捯饬spring的注解,现将遇到的问题记录下来,以供遇到同样问题的童鞋解决~先说明下场景,代
- QueryWrapper条件构造之apply、last、select场景: 查询数据库限制条数时mysql上的limit使用 Qu
- 本文实例讲述了C#获取web.config配置文件内容的方法。分享给大家供大家参考。具体实现方法如下:1.ConfigurationMana
- java 使用foreach遍历集合元素的实例1 代码示例import java.util.*; public class ForeachT
- mybatis-spring:@MapperScan注解在demo: springboot+mybatis的示例中,dao层接口使用了注解@
- 概述在移动应用开发中,消息推送可以说是一项非常重要的功能,它能够起到提醒或者唤醒用户的作用,同时也是产品运营人员更高效地实现运营目标的重要手
- 前言本篇开始讲解音频编辑的具体操作,从相对简单的音频裁剪开始。要进行音频裁剪,我的方案是开启一个Service服务用于音频裁剪的耗时操作,主