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;
    }
}
时间: 2024-08-30 14:30:03

Swing-JDialog示例代码-用户登陆UI的相关文章

QQ互联OAuth2.0 .NET SDK 发布以及网站QQ登陆示例代码

OAuth: OAuth(开放授权)是一个开放标准,允许用户授权第三方网站访问他们存储在另外的服务提供者上的信息,而不需要将用户名和密码提供给第三方网站或分享他们数据的所有内容. QQ登录OAuth2.0:对于用户相关的OpenAPI(例如获取用户信息,动态同步,照片,日志,分享等),为了保护用户数据的安全和隐私,第三方网站访问用户数据前都需要显式的向用户征求授权. QQ登录OAuth2.0采用OAuth2.0标准协议来进行用户身份验证和获取用户授权,相对于之前的OAuth1.0协议,其认证流程

AD帐户操作C#示例代码(一)——导入用户信息

最近写了一个AD帐户导入的小工具(为啥写作“帐”户呢?),跟大家分享下相关代码,欢迎各位高手指教! 首先,我准备一个这样的Excel文件作为导入模版,并添加了一些测试数据. 然后,我打开Visual Studio 2012,新建一个Windows窗体应用程序.在主窗体界面,我放了一些Label.TextBox.Button控件,还有一个ProgressBar. 开始写代码.首先写从Excel里读取数据的方法. private static async Task<DataTable> GetTa

AD帐户操作C#示例代码(二)——检查密码将过期的用户

本文接着和大家分享AD帐户操作,这次开发一个简单的检查密码将过期用户的小工具. 首先,新建一个用户实体类,属性是我们要取的用户信息. public class UserInfo { /// <summary> /// sAM帐户名称 /// </summary> public string SamAccountName { get; set; } /// <summary> /// 名称 /// </summary> public string Name {

[作业管理系统开发实战三 ]用户登陆模块的后端代码(thinkphp5)

前述两篇文章已经将用户登陆的界面和验证进行了实现,现在看看后端要做的事情(基于ThinkPHP5).举例来说,比如当学生登陆成功后则进入学生界面,在这个界面中,学生可以提交作业,查看自己作业的批改情况.当用户在前述界面中输入了用户名和密码,选择了学生用户后,点登陆,会进入dologin方法(位于controller\index\account\dologin),代码如下: public function dologin() { $kind=$_POST['kind']; if($kind=='t

用户登陆模块的后端实现

前述两篇文章“使用BootStrap制作用户登录UI”和“使用BootStrapValidator来完成前端输入验证 ”已经将用户登陆的界面和验证进行了实现,现在看看后端要做的事情(基于ThinkPHP5).举例来说,比如当学生登陆成功后则进入学生界面,在这个界面中,学生可以提交作业,查看自己作业的批改情况.当用户在前述界面中输入了用户名和密码,选择了学生用户后,点登陆,会进入dologin方法(位于controller\index\account\dologin),代码如下: public f

三层架构下实现用户登陆C#

上篇文章讲到三层.接下来就通过一个实例具体的看怎么用三层实现用户登陆界面. 一.Model实体(LoginModel): namespace LoginModel { //添加类:UserInfo Model实体作用:封装数据,使数据在三层中传输 ,更倾向于业务逻辑层 public class UserInfo { //定义用户属性 public int ID { get; set; } public string UserName { get; set; } public string Pas

Flask中如何实现用户登陆认证?

本文和大家分享的主要是使用Flask实现用户登陆认证的相关知识,希望对大家学习Flask有所帮助. 用户认证的原理 在了解使用Flask来实现用户认证之前,我们首先要明白用户认证的原理.假设现在我们要自己去实现用户认证,需要做哪些事情呢? 1. 首先,用户要能够输入用户名和密码,所以需要网页和表单,用以实现用户输入和提交的过程. 2. 用户提交了用户名和密码,我们就需要比对用户名,密码是否正确,而要想比对,首先我们的系统中就要有存储用户名,密码的地方,大多数后台系统会通过数据库来存储,但是实际上

PHPCMS \phpcms\modules\member\index.php 用户登陆SQL注入漏洞分析

catalog 1. 漏洞描述 2. 漏洞触发条件 3. 漏洞影响范围 4. 漏洞代码分析 5. 防御方法 6. 攻防思考 1. 漏洞描述2. 漏洞触发条件 0x1: POC http://localhost/phpcms_v9/index.php?m=member&c=index&a=login dosubmit=1&username=phpcms&password=123456%26username%3d%2527%2bunion%2bselect%2b%25272%2

左右JAVA示例代码事件分发和监督机制来实现-绝对原创有用

文章标题:左右JAVA示例代码事件分发和监督机制来实现 文章地址: http://blog.csdn.net/5iasp/article/details/37054171 作者: javaboy2012Email:[email protected]qq:    1046011462 一.场景如果 如果有博客系统中须要实现例如以下功能: 系统中用户公布文章.改动文章.删除文章时,须要一些相关的操作须要运行. 公布文章后,给好友发送邮件通知.给用户加积分,对文章做全文索引. 改动文章后,给好友发送邮