• 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()) + "
    ");
                    }
                }
            });
            
            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;
        }
    }
  • 相关阅读:
    朴素贝叶斯算法
    生成模型与判别模型
    决策树 ID3,C4.5 CART
    KNN 分类程序
    php的空间命名
    模式设计六大原则
    javascript 的设计模式(更新中)
    typescript 学习笔记
    PHP 关于smarty模板引擎的使用
    简易封装PDO的操作类
  • 原文地址:https://www.cnblogs.com/pzy4447/p/4701753.html
Copyright © 2020-2023  润新知