zoukankan      html  css  js  c++  java
  • 滴水穿石-10GUI

    GUI 图形用户界面

    1 Frame 窗体

    package d10;
    //第一导入包
    import java.awt.Frame;
    import java.awt.event.WindowAdapter;
    import java.awt.event.WindowEvent;
    import java.awt.event.WindowListener;
    
    
    public class Frame1 {
    
        public static void main(String[] args) {
            // 创建窗体并命名
            Frame f  = new Frame("HelloWorld");
            // 设置窗体大小
            //f.setSize(400, 300);
            // 设置窗体位置
            //f.setLocation(500, 300);
            
            //方法二 setBounds(x, y, width, height);
            f.setBounds(400,300, 500, 300);
            
            f.addWindowListener(new WindowAdapter() {
                @Override
                public void windowClosing(WindowEvent e) {
                    // TODO Auto-generated method stub
                    System.exit(0);
                }
            });
        
            //显示窗体
            f.setVisible(true);
        }
    
    }
    version 1.0
    package d10;
    import java.awt.Button;
    import java.awt.FlowLayout;
    //第一导入包
    import java.awt.Frame;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.awt.event.WindowAdapter;
    import java.awt.event.WindowEvent;
     
    
    
    public class Frame1 {
    
        public static void main(String[] args) {
            //01 创建窗体并命名
            Frame f  = new Frame("HelloWorld");         
         
            f.setBounds(400,300, 500, 300);
            //02-01创建 按钮 对象
            Button bu = new Button("点我");
            //02-02 按钮点击事件的监听
            bu.addActionListener(new ActionListener() {
                
                @Override
                public void actionPerformed(ActionEvent e) {
                     System.out.println("再点一个试试!");
                }
            });
            //01-02 设置窗体布局方式
            f.setLayout(new FlowLayout());
            //01-03 将按钮添加到Frame中
            f.add(bu);
            //01-04 窗体关闭事件的监听
            f.addWindowListener(new WindowAdapter() {
                @Override
                public void windowClosing(WindowEvent e) {
                    // TODO Auto-generated method stub
                    System.exit(0);
                }
            });
        
            //显示窗体
            f.setVisible(true);
        }
    
    }
    version 2.0

    package d10;
    
    import java.awt.Button;
    import java.awt.FlowLayout;
    import java.awt.Frame;
    import java.awt.TextArea;
    import java.awt.TextField;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.awt.event.WindowAdapter;
    import java.awt.event.WindowEvent;
    
    public class Frame2 {
        public static void main(String[] args) {
            //01-01 创建窗体对象那个
            Frame f = new Frame(); 
            //01-02 设置窗体位置
            f.setBounds(500, 300, 400, 300);
            //01-03 设置窗体布局方式
            f.setLayout(new FlowLayout());
            
            //02-01 创建元素
            TextField tf = new TextField(20);//02-01-01 创建文本框
            Button bu = new Button("数据转移");//02-01-02 创建按钮
            TextArea ta = new TextArea(10,20);//02-01-03 创建文本域
            //02-02 将元素添加到Frame中
            f.add(tf);
            f.add(bu); 
            f.add(ta);
            //02-03 为按钮添加监听事件
            bu.addActionListener(new ActionListener() {             
                public void actionPerformed(ActionEvent e) {
                    //02-03-01 获取文本框的值
                    String tf_str = tf.getText().trim();
                    //02-03-02 清空文本框的值
                    tf.setText("");
                    //02-03-03 追加到文本域中
                    ta.append(tf_str+"
    ");
                    //02-03-04 文本框获取焦点
                    tf.requestFocus();
                    
                }
            });
            //01-04 添加窗体关闭 监听事件
            f.addWindowListener(new WindowAdapter() {
                public void windowClosing(WindowEvent e) {
                    System.exit(0);
                }
            });
            
             
            //01-05 设置窗体显示
            f.setVisible(true);
        }
    }
    将文本框的值转移到文本域

    package d10;
    import java.awt.Button;
    import java.awt.Color;
    import java.awt.FlowLayout;
    //第一导入包
    import java.awt.Frame;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.awt.event.MouseAdapter;
    import java.awt.event.MouseEvent;
    import java.awt.event.WindowAdapter;
    import java.awt.event.WindowEvent;
     
    
    
    public class Frame3 {
    
        public static void main(String[] args) {
            //01 创建窗体并命名
            Frame f  = new Frame("HelloWorld");         
         
            f.setBounds(400,300, 500, 300);
            //02-01创建 按钮 对象
            Button bured = new Button("");
            bured.setBackground(Color.red);
            Button bugreen = new Button("绿");
            bugreen.setBackground(Color.green);
            Button bublue = new Button("");
            bublue.setBackground(Color.blue);
            
            //02-02 鼠标事件的监听
            bured.addMouseListener(new MouseAdapter() {
                @Override
                public void mouseEntered(MouseEvent e) {
                     f.setBackground(Color.red);
                }
                @Override
                public void mouseExited(MouseEvent e) {
                     f.setBackground(Color.white);
                }
            });
            bugreen.addMouseListener(new MouseAdapter() {
                @Override
                public void mouseEntered(MouseEvent e) {
                     f.setBackground(Color.green);
                }
                @Override
                public void mouseExited(MouseEvent e) {
                     f.setBackground(Color.white);
                }
            });
            bublue.addMouseListener(new MouseAdapter() {
                @Override
                public void mouseEntered(MouseEvent e) {
                     f.setBackground(Color.blue);
                }
                @Override
                public void mouseExited(MouseEvent e) {
                     f.setBackground(Color.white);
                }
            });
            //01-02 设置窗体布局方式
            f.setLayout(new FlowLayout());
            //01-03 将按钮添加到Frame中
            f.add(bured);f.add(bugreen);f.add(bublue);
            //01-04 窗体关闭事件的监听
            f.addWindowListener(new WindowAdapter() {
                @Override
                public void windowClosing(WindowEvent e) {
                    // TODO Auto-generated method stub
                    System.exit(0);
                }
            });
        
            //显示窗体
            f.setVisible(true);
        }
    
    }
    变换背景色

    package d10;
    
     
    import java.awt.FlowLayout;
    import java.awt.Frame;
    import java.awt.Label;
    import java.awt.TextField;
    import java.awt.event.KeyAdapter;
    import java.awt.event.KeyEvent;
    import java.awt.event.WindowAdapter;
    import java.awt.event.WindowEvent;
    
    public class Frame4 {
        public static void main(String[] args) {
            //01-01 创建窗体对象那个
            Frame f = new Frame(); 
            //01-02 设置窗体位置
            f.setBounds(500, 300, 400, 300);
            //01-03 设置窗体布局方式
            f.setLayout(new FlowLayout());
            
            //02-01 创建元素
            Label lb = new Label("只能输入数字");
            TextField tf = new TextField(20);//02-01-01 创建文本框
         
            //02-02 将元素添加到Frame中
            f.add(lb);
            f.add(tf);
             
            //02-03 为文本框添加键盘监听事件
            tf.addKeyListener(new KeyAdapter() {
                //键盘释放的时候做判断
                public void keyPressed(KeyEvent e) {    
                    char ch = e.getKeyChar();         
                     
                    if (!(ch>='0'&&ch<='9')) {
                        e.consume();
                    }  
                }
            });
             
            //01-04 添加窗体关闭 监听事件
            f.addWindowListener(new WindowAdapter() {
                public void windowClosing(WindowEvent e) {
                    System.exit(0);
                }
            });
            
             
            //01-05 设置窗体显示
            f.setVisible(true);
        }
    }
    只能输入数字--键盘监听事件

    package d10;
    import java.awt.Button;
    import java.awt.FlowLayout;
    //第一导入包
    import java.awt.Frame;
    import java.awt.Menu;
    import java.awt.MenuBar;
    import java.awt.MenuItem;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.awt.event.WindowAdapter;
    import java.awt.event.WindowEvent;
     
    
    
    public class Frame5 {
    
        public static void main(String[] args) {
            //01 创建窗体并命名
            Frame f  = new Frame("HelloWorld");     
            f.setBounds(400,300, 500, 300);
            //02-01创建 菜单 对象
            MenuBar mb = new MenuBar();//02-01创建菜单条
            Menu mu = new Menu("文件");//02-02 创建菜单
            MenuItem mi = new MenuItem("退出系统");//02-03 创建菜单项
            
            //02-02放置 菜单 对象
            mu.add(mi);
            mb.add(mu);
            
            //02-03 菜单项点击事件的监听
            
            mi.addActionListener(new ActionListener() {            
                @Override
                public void actionPerformed(ActionEvent e) {
                    System.exit(0);
                }
            });
            //01-02 设置窗体布局方式
            f.setLayout(new FlowLayout());
            //01-03 将菜单条添加到Frame中
            f.setMenuBar(mb);
            //01-04 窗体关闭事件的监听
            f.addWindowListener(new WindowAdapter() {
                @Override
                public void windowClosing(WindowEvent e) {
                    // TODO Auto-generated method stub
                    System.exit(0);
                }
            });
        
            //显示窗体
            f.setVisible(true);
        }
    
    }
    一级菜单

    package d10;
     
    import java.awt.FlowLayout;
    //第一导入包
    import java.awt.Frame;
    import java.awt.Menu;
    import java.awt.MenuBar;
    import java.awt.MenuItem;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.awt.event.WindowAdapter;
    import java.awt.event.WindowEvent;
    import java.io.IOException;
     
    
    
    public class Frame6 {
    
        public static void main(String[] args) {
            //01 创建窗体并命名
            Frame f  = new Frame("多级菜单");     
            final String fTitle = f.getTitle();
            f.setBounds(400,300, 500, 300);
            //02-01创建 菜单 对象
            MenuBar mb = new MenuBar();//02-01-01创建菜单条
            Menu mu = new Menu("文件");//02-01-02 创建一级菜单
            
            Menu mu2 = new Menu("设置标题");//02-01-03 创建二级菜单
            MenuItem mi2_01 = new MenuItem("好好学习");//02-01-03-01 创建菜单项
            MenuItem mi2_02 = new MenuItem("天天向上");//02-01-03-02 创建菜单项
            MenuItem mi2_03 = new MenuItem("恢复标题");//02-01-03-03 创建菜单项
            
            MenuItem mi_02 = new MenuItem("打开记事本");//02-01-02-02 创建菜单项
            MenuItem mi_03 = new MenuItem("退出系统");//02-01-02-03 创建菜单项
            
            //02-02放置 菜单 对象
            mu.add(mu2);
            mu2.add(mi2_01);
            mu2.add(mi2_02);
            mu2.add(mi2_03);
            mu.add(mi_02);
            mu.add(mi_03);
            mb.add(mu);
            
            //02-03 菜单项点击事件的监听
            mi2_01.addActionListener(new ActionListener() {            
                //好好学习
                public void actionPerformed(ActionEvent e) {
                    f.setTitle(mi2_01.getLabel());
                }
            });
            mi2_02.addActionListener(new ActionListener() {            
                //天天向上
                public void actionPerformed(ActionEvent e) {
                    f.setTitle(mi2_02.getLabel());
                }
            });
            mi2_03.addActionListener(new ActionListener() {            
                //恢复标题
                public void actionPerformed(ActionEvent e) {
                    f.setTitle(fTitle);
                }
            });
            mi_02.addActionListener(new ActionListener() {            
                //打开记事本
                public void actionPerformed(ActionEvent e) {
                    Runtime rt =  Runtime.getRuntime();
                    try {
                        rt.exec("notepad");
                    } catch (IOException e1) {
                        // TODO Auto-generated catch block
                        e1.printStackTrace();
                    }
                }
            });
            
            mi_03.addActionListener(new ActionListener() {            
                //退出系统
                public void actionPerformed(ActionEvent e) {
                    System.exit(0);
                }
            });
            //01-02 设置窗体布局方式
            f.setLayout(new FlowLayout());
            //01-03 将菜单条添加到Frame中
            f.setMenuBar(mb);
            //01-04 窗体关闭事件的监听
            f.addWindowListener(new WindowAdapter() {
                @Override
                public void windowClosing(WindowEvent e) {
                    // TODO Auto-generated method stub
                    System.exit(0);
                }
            });
        
            //显示窗体
            f.setVisible(true);
        }
    
    }
    多级菜单

     2:NetBeans 的使用

    2.1 小型计算器

      public CalculateFrame() {
            initComponents();
            init();
        }
    
        private void init() {
            //设置标题
            this.setTitle("小型计算器");
        }
    2.1.1 设置标题
      private void btnCalculateActionPerformed(java.awt.event.ActionEvent evt) {                                             
    
            //获取第一个操作数的值
            String sFirst = this.txtFirst.getText().trim();
            //获取第二个操作数的值
            String sSecond = this.txtSecond.getText().trim();
            //获取运算符的值
            String sOperator = this.cbOperator.getSelectedItem().toString().trim();
    
            //通过正则表达式 判断输入的内容是否合法
            String regex = "\d+";
            if (!sFirst.matches(regex)) {
                //弹框提示
                JOptionPane.showMessageDialog(this, this.lblFirst.getText() + "格式不正确");
                this.txtFirst.setText("");
                this.txtFirst.requestFocus();
                return;
            }
            if (!sSecond.matches(regex)) {
                //弹框提示
                JOptionPane.showMessageDialog(this, this.lblSecond.getText() + "格式不正确");
                this.txtSecond.setText("");
                this.txtSecond.requestFocus();
                return;
            }
            int iResult = 0;
    
            int iFirst = Integer.parseInt(sFirst);
            int iSecond = Integer.parseInt(sSecond);
            switch (sOperator) {
                case "+":
                    iResult = iFirst + iSecond;
                    break;
                case "-":
                    iResult = iFirst - iSecond;
                    break;
                case "*":
                    iResult = iFirst * iSecond;
                    break;
                case "/":
                    iResult = iFirst / iSecond;
                    break;
            }
            this.txtResult.setText(String.valueOf(iResult));
        }                                            
    2.1.2 计算按钮监听事件

    2.1.3 修改窗体的图标

    添加两个包,用于放置图片和设置UI操作

    /*
     * To change this license header, choose License Headers in Project Properties.
     * To change this template file, choose Tools | Templates
     * and open the template in the editor.
     */
    
    package D10.Util;
    
    import java.awt.Image;
    import java.awt.Toolkit;
    import javax.swing.JFrame;
    
    /**
     *专门做界面效果的类
     * @author Administrator
     */
    public class UiUtil {
        private UiUtil(){}
        
        public static void setFrameImage(JFrame jf){
          //01 获取工具类对象
          Toolkit tk =  Toolkit.getDefaultToolkit();
          
          //根据路径获取图片
         Image i = tk.getImage("src\D10\Resource\jjcc.jpg");
         jf.setIconImage(i);
        }
    }
    2.1.3 修改图标
    private void init() {
            //设置标题
            this.setTitle("小型计算器");
            //设置窗体图标
            UiUtil.setFrameImage(this);
        }
    修改初始化方法

     public static void setFrameCenter(JFrame jf) {
            //01 获取工具类对象
            Toolkit tk = Toolkit.getDefaultToolkit();
    
            //02 获取屏幕的宽和高
            Dimension d = tk.getScreenSize();
            double srceenWidth = d.getWidth();
            double srceenHeight = d.getHeight();
            //03 获取窗体的宽和高
            int frameWidth = jf.getWidth();
            int frameHeight = jf.getHeight();
            //04 计算新的位置
            int width = (int) (srceenWidth - frameWidth) / 2;
            int height = (int) (srceenHeight - frameHeight) / 2;
            
            //05 设置窗体坐标
            jf.setLocation(width, height);
        }
    2.1.4 窗体居中
     private void init() {
            //设置标题
            this.setTitle("小型计算器");
            //设置窗体图标
            UiUtil.setFrameImage(this);
            //设置窗体居中
            UiUtil.setFrameCenter(this);
        }
    修改初始化方法

     2.1.5 修改皮肤

    2.1.5.1 引用jar包

    2.1.5.2 修改main方法

        public static void main(String args[]) {
            /* Set the Nimbus look and feel */
            //<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
            /* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
             * For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html 
             */
            try {
                for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
                    if ("Nimbus".equals(info.getName())) {
                        javax.swing.UIManager.setLookAndFeel(info.getClassName());
                        break;
                    }
                }
            } catch (ClassNotFoundException ex) {
                java.util.logging.Logger.getLogger(CalculateFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
            } catch (InstantiationException ex) {
                java.util.logging.Logger.getLogger(CalculateFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
            } catch (IllegalAccessException ex) {
                java.util.logging.Logger.getLogger(CalculateFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
            } catch (javax.swing.UnsupportedLookAndFeelException ex) {
                java.util.logging.Logger.getLogger(CalculateFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
            }
            try {
                //</editor-fold>
                UIManager.setLookAndFeel("com.birosoft.liquid.LiquidLookAndFeel");
            } catch (ClassNotFoundException ex) {
                Logger.getLogger(CalculateFrame.class.getName()).log(Level.SEVERE, null, ex);
            } catch (InstantiationException ex) {
                Logger.getLogger(CalculateFrame.class.getName()).log(Level.SEVERE, null, ex);
            } catch (IllegalAccessException ex) {
                Logger.getLogger(CalculateFrame.class.getName()).log(Level.SEVERE, null, ex);
            } catch (UnsupportedLookAndFeelException ex) {
                Logger.getLogger(CalculateFrame.class.getName()).log(Level.SEVERE, null, ex);
            }
            /* Create and display the form */
            java.awt.EventQueue.invokeLater(new Runnable() {
                public void run() {
                    new CalculateFrame().setVisible(true);
                }
            });
        }
    main

    /*
     * To change this license header, choose License Headers in Project Properties.
     * To change this template file, choose Tools | Templates
     * and open the template in the editor.
     */
    
    package D10.Util;
    
    //这里面定义了常见的要使用的皮肤的字符串路径。
    public abstract class MyLookAndFeel {
        // 系统自带皮肤,5种都能用
        public static String SYS_METAL = "javax.swing.plaf.metal.MetalLookAndFeel";
        public static String SYS_NIMBUS = "com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel";
        // 有个性
        public static String SYS_CDE_MOTIF = "com.sun.java.swing.plaf.motif.MotifLookAndFeel";
        public static String SYS_WINDOWS = "com.sun.java.swing.plaf.windows.WindowsLookAndFeel";
        public static String SYS_WINDOWS_CLASSIC = "com.sun.java.swing.plaf.windows.WindowsClassicLookAndFeel";
        // JIattoo jar包资源
        public static String JTATTOO_ACRYL = "com.jtattoo.plaf.acryl.AcrylLookAndFeel";
        public static String JTATTOO_AERO = "com.jtattoo.plaf.aero.AeroLookAndFeel";
        // 还可以
        public static String JTATTOO_ALUMINUM = "com.jtattoo.plaf.aluminium.AluminiumLookAndFeel";
        // 很喜欢
        public static String JTATTOO_BERNSTEIN = "com.jtattoo.plaf.bernstein.BernsteinLookAndFeel";
        public static String JTATTOO_FAST = "com.jtattoo.plaf.fast.FastLookAndFeel";
        // 有个性
        public static String JTATTOO_HIFI = "com.jtattoo.plaf.hifi.HiFiLookAndFeel";
        public static String JTATTOO_LUNA = "com.jtattoo.plaf.luna.LunaLookAndFeel";
        // 很喜欢
        public static String JTATTOO_MCWIN = "com.jtattoo.plaf.mcwin.McWinLookAndFeel";
        public static String JTATTOO_MINT = "com.jtattoo.plaf.mint.MintLookAndFeel";
        // 有个性
        public static String JTATTOO_NOIRE = "com.jtattoo.plaf.noire.NoireLookAndFeel";
        public static String JTATTOO_SMART = "com.jtattoo.plaf.smart.SmartLookAndFeel";
        // liquidlnf.jar包资源
        // 很喜欢
        public static String LIQUIDINF = "com.birosoft.liquid.LiquidLookAndFeel";
    }
    MyLookAndFeel

     2.2 用户登录页面

    /*
     * To change this license header, choose License Headers in Project Properties.
     * To change this template file, choose Tools | Templates
     * and open the template in the editor.
     */
    
    package D10.Dao;
     
    import D10.Pojo.User;
    
    public interface UserDao {
        //用户登录
        public abstract boolean login(String username ,String password);
        //用户注册
        public abstract void regist(User user);
    }
    UserDao
    /*
     * To change this license header, choose License Headers in Project Properties.
     * To change this template file, choose Tools | Templates
     * and open the template in the editor.
     */
    package D10.Dao.Impl;
    
    import D10.Dao.UserDao;
    import D10.Pojo.User;
    import java.io.BufferedReader;
    import java.io.BufferedWriter;
    import java.io.File;
    import java.io.FileReader;
    import java.io.FileWriter;
    import java.io.IOException;
    import java.util.logging.Level;
    import java.util.logging.Logger;
    
    /**
     *
     * @author Administrator
     */
    public class UserDaoImpl implements UserDao {
    
        private static File file = new File("user.txt");
    
        static {
            try {
                file.createNewFile();
            } catch (IOException ex) {
                ex.printStackTrace();
            }
    
        }
    
        public boolean login(String username, String password) {
            boolean flag = false;
            BufferedReader  br = null;
            try{
                //一次读取一行数据
                br = new BufferedReader(new FileReader(file));
                String  line = null;
                while((line = br.readLine())!=null){
                    String [] datas = line.split("=");
                    if (datas[0].equals(username)&&datas[1].equals(password)) {
                        flag = true;
                        break;
                    }
                }
            }
            catch( IOException e){
                try {
                    br.close();
                } catch (IOException ex) {
                    Logger.getLogger(UserDaoImpl.class.getName()).log(Level.SEVERE, null, ex);
                }
            }
            return  flag;
        }
    
        public void regist(User user) {
            BufferedWriter bw = null;
            try{
               bw = new BufferedWriter(new FileWriter(file,true));
               bw.write(user.getUserName()+"="+user.getPassword());
               bw.newLine();
               bw.flush();
            }
            catch(IOException e){
                e.printStackTrace();
            }finally{
                try {
                    bw.close();
                } catch (IOException ex) {
                    Logger.getLogger(UserDaoImpl.class.getName()).log(Level.SEVERE, null, ex);
                }
            }
        }
    
    }
    UserDaoImpl
    /*
     * To change this license header, choose License Headers in Project Properties.
     * To change this template file, choose Tools | Templates
     * and open the template in the editor.
     */
    package D10.Pojo;
    
    /**
     *
     * @author Administrator
     */
    public class User {
    
        private String userName;
        private String password;
     
        public String getUserName() {
            return userName;
        }
     
        public void setUserName(String userName) {
            this.userName = userName;
        }
     
        public String getPassword() {
            return password;
        }
     
        public void setPassword(String password) {
            this.password = password;
        }
    }
    User
    /*
     * To change this license header, choose License Headers in Project Properties.
     * To change this template file, choose Tools | Templates
     * and open the template in the editor.
     */
    package D10.Util;
    
    import java.awt.Dimension;
    import java.awt.Image;
    import java.awt.Toolkit;
    import javax.swing.JFrame;
    
    /**
     * 专门做界面效果的类
     *
     * @author Administrator
     */
    public class UiUtil {
    
        private UiUtil() {
        }
    
        //修改窗体图标
        public static void setFrameImage(JFrame jf) {
            //01 获取工具类对象
            Toolkit tk = Toolkit.getDefaultToolkit();
    
            //根据路径获取图片
            Image i = tk.getImage("src\D10\Resource\user.jpg");
            jf.setIconImage(i);
        }
    
        //窗体居中
        public static void setFrameCenter(JFrame jf) {
            //01 获取工具类对象
            Toolkit tk = Toolkit.getDefaultToolkit();
    
            //02 获取屏幕的宽和高
            Dimension d = tk.getScreenSize();
            double srceenWidth = d.getWidth();
            double srceenHeight = d.getHeight();
            //03 获取窗体的宽和高
            int frameWidth = jf.getWidth();
            int frameHeight = jf.getHeight();
            //04 计算新的位置
            int width = (int) (srceenWidth - frameWidth) / 2;
            int height = (int) (srceenHeight - frameHeight) / 2;
            
            //05 设置窗体坐标
            jf.setLocation(width, height);
        }
    }
    UiUtil
    /*
     * To change this license header, choose License Headers in Project Properties.
     * To change this template file, choose Tools | Templates
     * and open the template in the editor.
     */
    package D10.view;
    
    import D10.Dao.Impl.UserDaoImpl;
    import D10.Dao.UserDao;
    import D10.Pojo.User;
    import D10.Util.UiUtil;
    import javax.swing.JOptionPane;
    
    /**
     *
     * @author Administrator
     */
    public class LoginFrame extends javax.swing.JFrame {
    
        /**
         * Creates new form LoginFrame
         */
        public LoginFrame() {
            initComponents();
            init();
        }
    
        private void init() {
            this.setTitle("登录界面");
            this.setResizable(false);
            UiUtil.setFrameCenter(this);
            UiUtil.setFrameImage(this);
        }
    
        /**
         * This method is called from within the constructor to initialize the form.
         * WARNING: Do NOT modify this code. The content of this method is always
         * regenerated by the Form Editor.
         */
        @SuppressWarnings("unchecked")
        // <editor-fold defaultstate="collapsed" desc="Generated Code">                          
        private void initComponents() {
    
            lblUserName = new javax.swing.JLabel();
            btnLogin = new javax.swing.JButton();
            txtUserName = new javax.swing.JTextField();
            txtPassword = new javax.swing.JTextField();
            lblPassword = new javax.swing.JLabel();
            btnRegister = new javax.swing.JButton();
            btnReset = new javax.swing.JButton();
    
            setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
    
            lblUserName.setText("用户名:");
    
            btnLogin.setText("登录");
            btnLogin.addActionListener(new java.awt.event.ActionListener() {
                public void actionPerformed(java.awt.event.ActionEvent evt) {
                    btnLoginActionPerformed(evt);
                }
            });
    
            lblPassword.setText("密码:");
    
            btnRegister.setText("注册");
            btnRegister.addActionListener(new java.awt.event.ActionListener() {
                public void actionPerformed(java.awt.event.ActionEvent evt) {
                    btnRegisterActionPerformed(evt);
                }
            });
    
            btnReset.setText("重置");
            btnReset.addActionListener(new java.awt.event.ActionListener() {
                public void actionPerformed(java.awt.event.ActionEvent evt) {
                    btnResetActionPerformed(evt);
                }
            });
    
            javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
            getContentPane().setLayout(layout);
            layout.setHorizontalGroup(
                layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGroup(layout.createSequentialGroup()
                    .addGap(79, 79, 79)
                    .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addComponent(lblUserName)
                            .addComponent(lblPassword))
                        .addGroup(layout.createSequentialGroup()
                            .addComponent(btnLogin)
                            .addGap(15, 15, 15)))
                    .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                        .addGroup(layout.createSequentialGroup()
                            .addGap(17, 17, 17)
                            .addComponent(btnReset)
                            .addGap(18, 18, 18)
                            .addComponent(btnRegister)
                            .addContainerGap(82, Short.MAX_VALUE))
                        .addGroup(layout.createSequentialGroup()
                            .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                                .addComponent(txtPassword, javax.swing.GroupLayout.DEFAULT_SIZE, 91, Short.MAX_VALUE)
                                .addComponent(txtUserName))
                            .addGap(0, 0, Short.MAX_VALUE))))
            );
            layout.setVerticalGroup(
                layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGroup(layout.createSequentialGroup()
                    .addGap(53, 53, 53)
                    .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                        .addComponent(lblUserName)
                        .addComponent(txtUserName, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addGap(18, 18, 18)
                    .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                        .addComponent(lblPassword)
                        .addComponent(txtPassword, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addGap(64, 64, 64)
                    .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                        .addComponent(btnLogin)
                        .addComponent(btnRegister)
                        .addComponent(btnReset))
                    .addContainerGap(90, Short.MAX_VALUE))
            );
    
            pack();
        }// </editor-fold>                        
    
        private void btnRegisterActionPerformed(java.awt.event.ActionEvent evt) {                                            
            // "登录界面"的"注册"按钮
            RegisterFrame rf = new RegisterFrame();
            //this.setVisible(false);
            this.dispose();
            rf.setVisible(true);
        }                                           
    
        private void btnResetActionPerformed(java.awt.event.ActionEvent evt) {                                         
            // "登录界面"的"重置"按钮
            this.txtPassword.setText("");
            this.txtUserName.setText("");
        }                                        
    
        private void btnLoginActionPerformed(java.awt.event.ActionEvent evt) {                                         
            // "登录界面"的"登录"按钮
            String userName = this.txtUserName.getText().trim();
            String password = this.txtPassword.getText().trim();
    
            String userNameRegex = "[a-zA-Z]{5}";
            String passwordRegex = "\w{5,12}";
    
            if (!userName.matches(userNameRegex) || !password.matches(passwordRegex)) {
                String msg = "";
                if (!userName.matches(userNameRegex)) {
                    msg += "用户名格式不正确!(5位英文字符)";
                }
                if (!password.matches(userNameRegex)) {
                    msg += "密码格式不正确!(6-12位字符)";
                }
                JOptionPane.showMessageDialog(this, msg);
                this.txtPassword.setText("");
                this.txtUserName.setText("");
                this.txtUserName.requestFocus();
                return;
            }
    
            //调用用户操作的功能进行注册
            UserDao ud = new UserDaoImpl();
            boolean flae = ud.login(userName, password);
            if (flae) {
                //给出提示
                JOptionPane.showMessageDialog(this, "登录成功!");
            } else {
                //给出提示
                JOptionPane.showMessageDialog(this, "用戶名或密碼有誤!");
                this.txtPassword.setText("");
                this.txtUserName.setText("");
                this.txtUserName.requestFocus();
            }
    
        }                                        
    
        /**
         * @param args the command line arguments
         */
        public static void main(String args[]) {
            /* Set the Nimbus look and feel */
            //<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
            /* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
             * For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html 
             */
            try {
                for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
                    if ("Nimbus".equals(info.getName())) {
                        javax.swing.UIManager.setLookAndFeel(info.getClassName());
                        break;
                    }
                }
            } catch (ClassNotFoundException ex) {
                java.util.logging.Logger.getLogger(LoginFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
            } catch (InstantiationException ex) {
                java.util.logging.Logger.getLogger(LoginFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
            } catch (IllegalAccessException ex) {
                java.util.logging.Logger.getLogger(LoginFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
            } catch (javax.swing.UnsupportedLookAndFeelException ex) {
                java.util.logging.Logger.getLogger(LoginFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
            }
            //</editor-fold>
    
            /* Create and display the form */
            java.awt.EventQueue.invokeLater(new Runnable() {
                public void run() {
                    new LoginFrame().setVisible(true);
                }
            });
        }
    
        // Variables declaration - do not modify                     
        private javax.swing.JButton btnLogin;
        private javax.swing.JButton btnRegister;
        private javax.swing.JButton btnReset;
        private javax.swing.JLabel lblPassword;
        private javax.swing.JLabel lblUserName;
        private javax.swing.JTextField txtPassword;
        private javax.swing.JTextField txtUserName;
        // End of variables declaration                   
    
    }
    LoginFrame
    /*
     * To change this license header, choose License Headers in Project Properties.
     * To change this template file, choose Tools | Templates
     * and open the template in the editor.
     */
    package D10.view;
    
    import D10.Dao.Impl.UserDaoImpl;
    import D10.Dao.UserDao;
    import D10.Pojo.User;
    import D10.Util.UiUtil;
    import javax.swing.JOptionPane;
    
    /**
     *
     * @author Administrator
     */
    public class RegisterFrame extends javax.swing.JFrame {
    
        /**
         * Creates new form LoginFrame
         */
        public RegisterFrame() {
            initComponents();
            init();
        }
    
        private void init() {
            this.setTitle("登录界面");
            this.setResizable(false);
            UiUtil.setFrameCenter(this);
            UiUtil.setFrameImage(this);
        }
    
        /**
         * This method is called from within the constructor to initialize the form.
         * WARNING: Do NOT modify this code. The content of this method is always
         * regenerated by the Form Editor.
         */
        @SuppressWarnings("unchecked")
        // <editor-fold defaultstate="collapsed" desc="Generated Code">                          
        private void initComponents() {
    
            lblUserName = new javax.swing.JLabel();
            btnCancel = new javax.swing.JButton();
            txtUserName = new javax.swing.JTextField();
            txtPassword = new javax.swing.JTextField();
            lblPassword = new javax.swing.JLabel();
            btnRegister = new javax.swing.JButton();
    
            setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
    
            lblUserName.setText("用户名:");
    
            btnCancel.setText("取消");
            btnCancel.addActionListener(new java.awt.event.ActionListener() {
                public void actionPerformed(java.awt.event.ActionEvent evt) {
                    btnCancelActionPerformed(evt);
                }
            });
    
            lblPassword.setText("密码:");
    
            btnRegister.setText("注册");
            btnRegister.addActionListener(new java.awt.event.ActionListener() {
                public void actionPerformed(java.awt.event.ActionEvent evt) {
                    btnRegisterActionPerformed(evt);
                }
            });
    
            javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
            getContentPane().setLayout(layout);
            layout.setHorizontalGroup(
                layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGroup(layout.createSequentialGroup()
                    .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                        .addGroup(layout.createSequentialGroup()
                            .addGap(104, 104, 104)
                            .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                .addComponent(lblUserName)
                                .addComponent(lblPassword)))
                        .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                            .addContainerGap()
                            .addComponent(btnRegister)
                            .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)))
                    .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                        .addGroup(layout.createSequentialGroup()
                            .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                                .addComponent(txtPassword, javax.swing.GroupLayout.DEFAULT_SIZE, 91, Short.MAX_VALUE)
                                .addComponent(txtUserName))
                            .addGap(0, 134, Short.MAX_VALUE))
                        .addGroup(layout.createSequentialGroup()
                            .addGap(47, 47, 47)
                            .addComponent(btnCancel)
                            .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))))
            );
            layout.setVerticalGroup(
                layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGroup(layout.createSequentialGroup()
                    .addGap(53, 53, 53)
                    .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                        .addComponent(lblUserName)
                        .addComponent(txtUserName, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addGap(18, 18, 18)
                    .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                        .addComponent(lblPassword)
                        .addComponent(txtPassword, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addGap(36, 36, 36)
                    .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                        .addComponent(btnRegister)
                        .addComponent(btnCancel))
                    .addContainerGap(118, Short.MAX_VALUE))
            );
    
            pack();
        }// </editor-fold>                        
    
        private void btnCancelActionPerformed(java.awt.event.ActionEvent evt) {                                          
            goLogin();
        }                                         
    
        private void btnRegisterActionPerformed(java.awt.event.ActionEvent evt) {                                            
            // "注册界面"的"注册"按钮:
            String userName = this.txtUserName.getText().trim();
            String password = this.txtPassword.getText().trim();
    
            String userNameRegex = "[a-zA-Z]{5}";
            String passwordRegex = "\w{5,12}";
    
            if (!userName.matches(userNameRegex) || !password.matches(passwordRegex)) {
                String msg = "";
                if (!userName.matches(userNameRegex)) {
                    msg += "用户名格式不正确!(5位英文字符)";
                }
                if (!password.matches(userNameRegex)) {
                    msg += "密码格式不正确!(6-12位字符)";
                }
                JOptionPane.showMessageDialog(this, msg);
                this.txtPassword.setText("");
                this.txtUserName.setText("");
                this.txtUserName.requestFocus();
                return;
            }
            //封装对象 
            User user = new User();
            user.setUserName(userName);
            user.setPassword(password);
            //调用用户操作的功能进行注册
            UserDao ud = new UserDaoImpl();
            ud.regist(user);
            //给出提示
            JOptionPane.showMessageDialog(this, "注册成功!");
            goLogin();
        }                                           
    
        /**
         * @param args the command line arguments
         */
        public static void main(String args[]) {
            /* Set the Nimbus look and feel */
            //<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
            /* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
             * For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html 
             */
            try {
                for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
                    if ("Nimbus".equals(info.getName())) {
                        javax.swing.UIManager.setLookAndFeel(info.getClassName());
                        break;
                    }
                }
            } catch (ClassNotFoundException ex) {
                java.util.logging.Logger.getLogger(RegisterFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
            } catch (InstantiationException ex) {
                java.util.logging.Logger.getLogger(RegisterFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
            } catch (IllegalAccessException ex) {
                java.util.logging.Logger.getLogger(RegisterFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
            } catch (javax.swing.UnsupportedLookAndFeelException ex) {
                java.util.logging.Logger.getLogger(RegisterFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
            }
            //</editor-fold>
    
            /* Create and display the form */
            java.awt.EventQueue.invokeLater(new Runnable() {
                public void run() {
                    new RegisterFrame().setVisible(true);
                }
            });
        }
    
        // Variables declaration - do not modify                     
        private javax.swing.JButton btnCancel;
        private javax.swing.JButton btnRegister;
        private javax.swing.JLabel lblPassword;
        private javax.swing.JLabel lblUserName;
        private javax.swing.JTextField txtPassword;
        private javax.swing.JTextField txtUserName;
        // End of variables declaration                   
    
        private void goLogin() {
            this.dispose();
            LoginFrame lf = new LoginFrame();
            lf.setVisible(true);
        }
    
    }
    RegisterFrame

  • 相关阅读:
    Android5.0录屏方案
    Android点阵屏效果的控件
    Android绘制View相关的几个问题
    AndroidStudio导入第三方开源库
    第六百二十三天 how can I坚持
    第六百二十二天 how can I 坚持
    第六百二十一天 how can I 坚持
    第六百二十天 how can I 坚持
    第六百一十九天 how can I 坚持
    第六百一十八天 how can I 坚持
  • 原文地址:https://www.cnblogs.com/YK2012/p/8682336.html
Copyright © 2011-2022 走看看