• 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;
        }
    }
  • 相关阅读:
    uboot nand erase 的显示错误修复
    Sougo for linux install.
    S3C6410移植uboot2010.3(2)基本的启动信息修改
    S3C6410移植uboot2010.3(4)uboot的dnw功能添加
    S3C6410移植uboot2010.3(3)正常化配置
    ubuntu乱码修复
    应老婆点(20070705 13:11:34)(新浪)
    克己慎独 2008923 13:32:00 (21ic)
    信任(20061229 14:16:32)(新浪)
    不要轻易承诺 2008926 14:42:00 (21ic)
  • 原文地址:https://www.cnblogs.com/pzy4447/p/4701753.html
Copyright © 2020-2023  润新知