• Java的UI


    Java的UI,窗口,面板

    窗口:

    继承JFrame

    方法:

    public class FramePanel extends JFrame {
        public FramePanel() throws HeadlessException {	
    		this.setTitle("Hello World");//设置标题
            this.setSize(500,500);//设置宽高
            this.setLocationRelativeTo(null);//水平垂直居中       设置相对位置
            this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//关闭窗口时退出程序       设置默认关闭操作
            this.setResizable(false);//设置禁止窗口拖拽     设置可改变的窗口size
    		this.setVisible(true);//让窗口显示     设置可视化的  
            }
        public static void main(String[] args) {
            new FramePanel();//创建一个新窗口
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    setVisible一般放在最后一行,这样前面的操作完后才能显示

    面板:在窗口上展示的部分

    		//创建一个面板
            JPanel jPanel=new JPanel();
            jPanel.setBackground((new Color(123,123,123)));//设置背景
    		//把面板添加到窗口
            this.add(jPanel);
    
    • 1
    • 2
    • 3
    • 4
    • 5

    三种布局:

    流式布局

    面板组件可以设置布局管理方式:布局管理器
    FlowLayout:流式布局 也是面板默认布局
    把组件放在一排,从左到右排放,一行占满后,重新开一行

    eg1:

    public class DemoFame extends JFrame {
        public DemoFame() throws HeadlessException {
            this.setTitle("Hello World");
            this.setSize(500,500);//设置宽高
            this.setLocationRelativeTo(null);//水平垂直居中       设置相对位置
            this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//关闭窗口时退出程序       设置默认关闭操作
            this.setResizable(false);//设置禁止窗口拖拽     设置可改变的窗口size
    
            JPanel jPanel1=new JPanel(new FlowLayout(FlowLayout.LEFT));//设置内容水平对齐方式
    
            JButton jButton1=new JButton("按钮1");
            JButton jButton2=new JButton("按钮2");
    
            //把按钮添加到面板
            jPanel1.add(jButton1);
            jPanel1.add(jButton2);
    
            //把面板添加到窗口
            this.add(jPanel1);
    
            this.setVisible(true);//让窗口显示     设置可视化的
        }
    
        public static void main(String[] args) {
            new DemoFame();//创建一个新窗口
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27

    eg2:

         JPanel jPanel2=new JPanel(new FlowLayout(FlowLayout.LEFT,200,50));//设置内容水平对齐方式
    
            JButton jButton1=new JButton("按钮1");
            JButton jButton2=new JButton("按钮2");
    
            //把按钮添加到面板
            jPanel2.add(jButton1);
            jPanel2.add(jButton2);
    
        public static void main(String[] args) {
            new DemoFame();//创建一个新窗口
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    边界布局:

    总共有五个区域,每个区域可以放置一个组件,并且占满整个区域
    中间区域是必须的,其他四个区域根据需要
    添加组件式,可以绑定组件的位置,如果不限定,默认在中间

            //创建面板边界布局的面板
            JPanel jPanel=new JPanel(new BorderLayout());
    
            JButton jButton1=new JButton("按钮1");
            JButton jButton2=new JButton("按钮2");
            JButton jButton3=new JButton("按钮3");
            JButton jButton4=new JButton("按钮4");
            JButton jButton5=new JButton("按钮5");
            //把按钮添加到面板
            jPanel.add(jButton1,BorderLayout.NORTH);
            jPanel.add(jButton2,BorderLayout.SOUTH);
            jPanel.add(jButton3,BorderLayout.WEST);
            jPanel.add(jButton4,BorderLayout.EAST);
            jPanel.add(jButton5,BorderLayout.CENTER);
    
        public static void main(String[] args) {
            new DemoFrame();//创建一个新窗口
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    网格布局:

    网格类似于一个表格,可以设置行数和列数
    每个网格中只能放一个组件,占整个区域
    从第一行开始放,第一行占满后,开启第二行

           //创建网格布局的面板
            JPanel jPanel=new JPanel(new GridLayout());
    
            JButton jButton1=new JButton("按钮1");
            JButton jButton2=new JButton("按钮2");
            JButton jButton3=new JButton("按钮3");
            JButton jButton4=new JButton("按钮4");
            JButton jButton5=new JButton("按钮5");
            //把按钮添加到面板
            jPanel.add(jButton1);
            jPanel.add(jButton2);
            jPanel.add(jButton3);
            jPanel.add(jButton4);
            jPanel.add(jButton5);
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    标签:

    用来放文本,图片等

    		//创建一个面板
            JPanel jPanel=new JPanel();
            //创建标签
            JLabel jLabel=new JLabel("你好");//label标签
            jLabel.setFont(new Font("横体",Font.BOLD,20));//font字体    bold黑体的,醒目的
            jLabel.setForeground(new Color(27,147,27));//设置字体颜色
            //把标签放在面板上
            jPanel.add(jLabel);
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    文本框:

    单行文本框:
    		//单行文本框组件    设置列数   列宽
            JTextField jTextField=new JTextField(15);//    column:列
            jTextField.getText();//获得文本框中的内容
    
            //把标签放在面板上
            jPanel.add(jLabel);
            jPanel.add(jTextField);//把文本框添加到面板上
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    多行文本框:
    		//多行文本框组件(文本域)
            JTextArea jTextArea=new JTextArea(5,20);//5行20列的文本域
            jTextArea.setLineWrap(true);//设置强制换行
            //带滚动条的    把多行文本框组件加起来
            JScrollPane j=new JScrollPane(jTextArea);
            jPanel.add(j);//把j添加进面板
            //把标签放在面板上
            //jPanel.add(jLabel);
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    密码文本框:
    		JLabel passwordjLabel =new JLabel("密码");
            JPasswordField jPasswordField=new JPasswordField(15);//设置密码文本框
            char[] password=jPasswordField.getPassword();//返回char数组,获得输入的密码
            String s=new String(password);//把char从转换成string
            
            jPanel.add(passwordjLabel);
            jPanel.add(jPasswordField);
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    按钮:
    		//按钮
            JButton jButton=new JButton("登录");//设置按钮
            jButton.setEnabled(false);//禁用按钮
            jButton.setToolTipText("点击登录");//鼠标悬浮在按钮上有提示
            
            jPanel.add(jButton);//添加按钮
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    菜单:

    菜单就是窗口上方的功能

    		//菜单栏
            JMenuBar jMenuBar=new JMenuBar();//创建菜单栏
            //创建菜单
            JMenu jMenu1=new JMenu("文件");
            JMenu jMenu2=new JMenu("编辑");
            JMenu jMenu3=new JMenu("帮助");
            //把菜单加到菜单栏
            jMenuBar.add(jMenu1);
            jMenuBar.add(jMenu2);
            jMenuBar.add(jMenu3);
            //创建菜单项
            JMenuItem jMenuItem1=new JMenuItem("新建");
            JMenuItem jMenuItem2=new JMenuItem("另存为");
            JMenuItem jMenuItem3=new JMenuItem("保存");
            JMenuItem jMenuItem4=new JMenuItem("打开");
            JMenuItem jMenuItem5=new JMenuItem("插入");
            JMenuItem jMenuItem6=new JMenuItem("停止");
            JMenuItem jMenuItem7=new JMenuItem("debug");
            JMenuItem jMenuItem8=new JMenuItem("启动");
            JMenuItem jMenuItem9=new JMenuItem("关于我们");
    
            //把菜单项加到菜单
            jMenu1.add(jMenuItem1);
            jMenu1.add(jMenuItem2);
            jMenu1.add(jMenuItem3);
            jMenu1.add(jMenuItem4);
            jMenu2.add(jMenuItem5);
            jMenu2.add(jMenuItem6);
            jMenu2.add(jMenuItem7);
            jMenu2.add(jMenuItem8);
            jMenu3.add(jMenuItem9);
    
            //把菜单栏添加到窗口
            this.setMenuBar(jMenuBar);
            this.setVisible(true);//让窗口显示     设置可视化的
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35

    事件处理:

    对面板上的各种部件,当鼠标点击时需要做出相应的回应,这种交互便是事件处理,当按到相应的部件,做出相应的事件控制是十分有必要的,这样一个程序才能 “活” 起来

    事件处理需要监听器,当监听到哪个部件被按到时,执行对应操作

    		//new个接口  创建一个匿名内部类,不用每次创建内部类
    	    //为按钮添加监听器,当被按时,监听到,执行方法
            jButton.addActionListener(new ActionListener() {
                @Override
                public void actionPerformed(ActionEvent e) {
                    System.out.println("按钮被点击了");
                }
            });
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    每点击一次按钮就会输出一下"按钮被点击了"

    鼠标处理事件:
    			//为按钮添加监听器
    			jButton.addMouseListener(new MouseAdapter() {
                @Override
                public void mouseClicked(MouseEvent e) {
                    System.out.println("鼠标点击触发");
                }
    
                @Override
                public void mousePressed(MouseEvent e) {
                    System.out.println("鼠标按下");
                }
    
                @Override
                public void mouseReleased(MouseEvent e) {
                    System.out.println("鼠标释放");
                }
    
                @Override
                public void mouseEntered(MouseEvent e) {
                    System.out.println("鼠标移入标签上");
                }
    
                @Override
                public void mouseExited(MouseEvent e) {
                    System.out.println("鼠标移入到标签上");
                }
            });
    /*
    鼠标移入标签上
    鼠标移入到标签上
    鼠标移入标签上
    鼠标按下
    鼠标释放
    鼠标点击触发
    鼠标按下
    鼠标释放
    鼠标点击触发
    鼠标移入到标签上
    */
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    键盘事件:
    //创建一个文本框的监听器
    //Adapter适应器
    jTextField.addKeyListener(new KeyAdapter() {
                @Override
                public void keyPressed(KeyEvent e) {
                    //getkeycode得到输入的一个字符,,,getkeycode得到这个字符编码
                    System.out.println("输入了一次"+e.getKeyChar()+":"+e.getKeyCode());
                }
            });
    /*
    输入了一次:16
    输入了一次a:65
    输入了一次d:68
    输入了一次a:65
    输入了一次d:68
    输入了一次f:70
    */
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    各类警告窗口:
    jButton2.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent e) {
            //confirm确定      JOptionPane.OK_CANCEL_OPTION添加确定或取消选项,确定返回0,取消返回2
            JOptionPane.showConfirmDialog(null,"您确定要退出吗?","操作提示",JOptionPane.OK_CANCEL_OPTION);
        }
    });
    jButton.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent e) {
            //获得文本框输入的内容
            String account=jTextField.getText();
            if(account.length()==0){
                //警告窗口
                //pane窗格   dialog对话   title给警告窗口加标题  给窗口加警告图标JOptionPane.ERROR_MESSAGE
                JOptionPane.showMessageDialog(null,"请输入账号","警告",JOptionPane.ERROR_MESSAGE);
                return;
            }
        }
    });
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
  • 相关阅读:
    dockerfile关键字
    箭头函数写法
    parted磁盘分区 教程
    【Python进阶-PyQt5】00搭建PyQt5环境
    顶象首届业务安全保卫战完美落幕,快来看看TOP10里有没有你!
    自己动手实现rpc框架(二) 实现集群间rpc通信
    UIC 564-2 座椅耐火测试
    面试题目记录
    滴滴 - dispatching
    2023最新SSM计算机毕业设计选题大全(附源码+LW)之java学生信息管理系统ow05a
  • 原文地址:https://blog.csdn.net/qq_45576281/article/details/134430797