博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Swing-JDialog示例代码-用户登陆UI
阅读量:6871 次
发布时间:2019-06-26

本文共 5557 字,大约阅读时间需要 18 分钟。

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;    }}

 

转载于:https://www.cnblogs.com/pzy4447/p/4701753.html

你可能感兴趣的文章
Axure7.0汉化方法
查看>>
我的MYSQL学习心得(九)
查看>>
JavaScript高级程序设计学习笔记--DOM
查看>>
Python易学就会(五)turtle绘制椭圆与递归
查看>>
echarts map地图设置外边框或者阴影
查看>>
webpack4学习总结
查看>>
vue.js vue-router history模式路由,域名二级目录子目录nginx配置
查看>>
web前端规范
查看>>
理解网页的关键渲染路径(CRP)
查看>>
使用vue-cli脚手架+webpack搭建vue项目
查看>>
Docker - 03 编排容器 Docker Compose 指令速查表
查看>>
Mybatis基本映射--INSERT
查看>>
移动 web 端屏幕适配 - rem
查看>>
聊聊hystrix的BucketedCounterStream
查看>>
50多种适合机器学习和预测应用的API,你的选择是?(2018年版本)
查看>>
【题目】【4天】寻宝
查看>>
Flutter教程(一) 十分钟了解Flutter
查看>>
maven实战第一步,eclipse创建hello-world项目
查看>>
安装自动化工具ansible
查看>>
手把手教你理解卷积神经网络
查看>>