第十八章总结

一.Swing概述

二.Swing常用窗体
        1.JFrame窗体
创建一个不可见、具有标题的窗体,关键代码:

JFrame jf=new JFrame("登陆系统");
Container container=jf.getContentPane();
在创建窗体后,先调用getContentPane()方法将窗体转换为容器,再调用add()方法或者remove()方法向容器中添加组件或者删除容器中的组件。向容器中添加按钮,关键代码:

JButton okBtn=new JButton("确定")
Container.add(okBtn)
删除容器中的按钮,关键代码:

container.remove(okBtn);

【例18.1】第一个窗体程序 

代码:

 2.JDialog对话框

JDialog类常用的构造方法:

 
  1. public JDialog():创建一个没有标题和父窗体的对话框
    public JDialog(Frame f):创建一个没有标题,但指定父窗体的对话框
    public JDialog(Frame f,boolean model):创建一个没有标题,但指定父窗体和模式的对话框。如果model为        true,那么弹出对话框后,用户无法操作父窗体
    public JDialog(Fream f,String title):创建一个指定标题和父窗体的对话框
    public JDialog(Frame f,String title,boolean model):创建一个指定标题、父窗体和模式的对话框
  2. 【例18.2】在窗体中弹出对话框3.JOptionPane小型对话框

    1)自定义对话框

    (2)确认框

    (3)输入框

    (4)通知框 

    【例18.3】弹出会话框,问用户准备好了吗

    代码:

    【例18.4】弹出会话框,询问用户是否离开

    代码:

    【例18.5】弹出会话框,让用户输入自己的姓名

    代码:

    【例18.6】弹出警告对话框

    代码:

    三.常用布局管理器

            1.null绝对布局

    【例18.7】使用绝对布局定位按钮位置和大小

    代码:

       2.FlowLayout流布局管理器
    FlowLayout类具有以下的构造方法:

    public FlowLayout()
    public FlowLayout(int alignment)
    public FlowLayout(int alignment,int horizGap,int vertGap)

    【例18.8】使用流布局排序按钮
    代码:

    结果:

            3.BorderLayout边界布局管理器


    add()方法被用于实现向容器中添加组件的功能,它可以设置组件的摆放位置。add()方法常用的语法格式:

    public void add(Compponent comp,Object constraints)
    comp:被添加的组件。

    constraints:被添加组件的布局约束对象。

    【例18.9】使用边界布局排列按钮 
    代码:

    结果:

            4.GridLayout网格布局管理器
    网格布局管理器主要有以下两个常用的构造方法:

    public GridLayout(int rows,int columns)
    public GridLayout(int rows,int columns,int horizGap,int vertGap)
    【例18.10】使用网格布局排列按钮
    代码:

    结果:

    四.常用面板
            1.JPanel面板
    【例18.11】在一个窗体中显示4种布局风格的面板
    代码:

    结果:

            2.JScrollPane滚动面板
    【例18.12】为窗体添加上下滚动条
    代码:

    结果:

    五.文字标签组件与图标 
            1.JLabel标签
    【例18.13】在窗体中显示文字标签
    代码:

    结果:

            2.图标的使用
    【例18.14】在窗体中演示图标
    代码:

    结果:

    六.按钮组件        
            1.JButton按钮


    【例18.15】演示不同效果的按钮
    代码:

    结果:

            2.JRadioButton单选按钮
    【例18.16】性别选择
    代码:

    结果:

            3.JCheckBox复选框
    【例18.17】打印用户的所选内容
    代码:

    结果:

    七.列表组件
            1.JComboBox下拉列表框


    【例18.18】在下拉列表框中显示用户的所选内容
    代码:

    结果:

            2.JList列表框
    【例18.19】在列表框显示用户的所选内容
    代码:

    结果:

    八.JTextField文本框
    【例18.20】在文本框中显示默认文字并清除
    代码:

    结果:

            2.JPasswordField密码框
    JPasswordField类提供了setEchoChar()方法,这个方法被用于改变密码框的回显字符:

    public void setEchoChar(char c)
            3.JTextArea文本框
    【例18.21】在文本域中显示默认文字
    代码:

    结果:

    九.表格组件
            1.创建表格
    【例18.22】创建带滚动条的表格
    代码:

    结果:

            2.DefaultTableModel表格数据模型
    AbstractTableModel抽象类实现了TableModel接口的大部分方法,只有以下3个抽象方法没有实现:

    public int getRowCounts();
    public int getColumnCount();
    public Object getValueAt(int rowIndex,int columnIndex);


    【例18.23】表格自动排序 
    代码:

    结果:

            3.维护表格模型
    【例18.24】对表格内容进行增删改查
    代码:

    结果:

    十.事件监听器
            1.ActionEvent动作事件


    【例18.25】单击按钮后,修改按钮文本
    代码:

    结果:

            2.KeyEvent键盘事件


    【例18.26】虚拟键盘
    代码:

    import java.awt.BorderLayout;
    import java.awt.EventQueue;
    import javax.swing.JFrame;
    import javax.swing.JPanel;
    import javax.swing.border.EmptyBorder;
    import java.awt.Color;
    import java.awt.Component;
    import javax.swing.JButton;
    import java.awt.Font;
    import javax.swing.SwingConstants;
    import javax.swing.border.TitledBorder;
    import java.awt.event.KeyAdapter;
    import java.awt.event.KeyEvent;
    import java.util.ArrayList;
    import javax.swing.JTextField;
     
    /**
     * 虚拟键盘(键盘的按下与释放)
     */
    public class KeyBoard extends JFrame { // 创建“键盘”类继承JFrame
        // 声明窗体中的成员组件
        private JPanel contentPane;
        private JTextField textField;
        private JButton btnQ;
        private JButton btnW;
        private JButton btnE;
        private JButton btnR;
        private JButton btnT;
        private JButton btnY;
        private JButton btnU;
        private JButton btnI;
        private JButton btnO;
        private JButton btnP;
        private JButton btnA;
        private JButton btnS;
        private JButton btnD;
        private JButton btnF;
        private JButton btnG;
        private JButton btnH;
        private JButton btnJ;
        private JButton btnK;
        private JButton btnL;
        private JButton btnZ;
        private JButton btnX;
        private JButton btnC;
        private JButton btnV;
        private JButton btnB;
        private JButton btnN;
        private JButton btnM;
        Color green = Color.GREEN;// 定义Color对象,用来表示按下键的颜色
        Color white = Color.WHITE;// 定义Color对象,用来表示释放键的颜色
     
        ArrayList<JButton> btns = new ArrayList<JButton>();// 定义一个集合,用来存储所有的按键ID
        // 自定义一个方法,用来将容器中的所有JButton组件添加到集合中
     
        private void addButtons() {
            for (Component cmp : contentPane.getComponents()) {// 遍历面板中的所有组件
                if (cmp instanceof JButton) {// 判断组件的类型是否为JButton类型
                    btns.add((JButton) cmp);// 将JButton组件添加到集合中
                }
            }
        }
     
        /**
         * 主方法
         */
        public static void main(String[] args) {
            EventQueue.invokeLater(new Runnable() { // 使得Runnable中的的run()方法在the system EventQueue的指派线程中被调用
                public void run() {
                    try {
                        KeyBoard frame = new KeyBoard(); // 创建KeyBoard对象
                        frame.setVisible(true); // 使frame可视
                        frame.addButtons();// 初始化存储所有按键的集合
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                }
            });
        }
     
        /**
         * 创建JFrame窗体
         */
        public KeyBoard() { // KeyBoard的构造方法
            setTitle("\u865A\u62DF\u952E\u76D8\uFF08\u6A21\u62DF\u952E\u76D8\u7684\u6309\u4E0B\u4E0E\u91CA\u653E\uFF09"); // 设置窗体题目
            setResizable(false); // 不可改变窗体宽高
            setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // 设置窗体关闭的方式
            setBounds(100, 100, 560, 280); // 设置窗体的位置和宽高
            /**
             * 创建JPanel面板contentPane置于JFrame窗体中,并设置面板的背景色、边距和布局
             */
            contentPane = new JPanel();
            contentPane.setBackground(Color.WHITE);
            contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
            setContentPane(contentPane);
            contentPane.setLayout(null);
            /**
             * 创建按钮button置于面板contentPane中,设置按钮的背景色、位置、宽高以及按钮中的字体位置、内容、样式
             */
            btnQ = new JButton("Q");
            btnQ.setBackground(white);
            btnQ.setVerticalAlignment(SwingConstants.TOP);
            btnQ.setHorizontalAlignment(SwingConstants.LEADING);
            btnQ.setFont(new Font("Times New Roman", Font.PLAIN, 14));
            btnQ.setBounds(0, 60, 47, 45);
            contentPane.add(btnQ);
            /**
             * 创建按钮button_2置于面板contentPane中,设置按钮的背景色、位置、宽高以及按钮中的字体位置、内容、样式
             */
            btnW = new JButton("W");
            btnW.setBackground(white);
            btnW.setVerticalAlignment(SwingConstants.TOP);
            btnW.setHorizontalAlignment(SwingConstants.LEADING);
            btnW.setFont(new Font("Times New Roman", Font.PLAIN, 14));
            btnW.setBounds(55, 60, 49, 45);
            contentPane.add(btnW);
            /**
             * 创建按钮button_3置于面板contentPane中,设置按钮的背景色、位置、宽高以及按钮中的字体位置、内容、样式
             */
            btnE = new JButton("E");
            btnE.setBackground(white);
            btnE.setVerticalAlignment(SwingConstants.TOP);
            btnE.setHorizontalAlignment(SwingConstants.LEADING);
            btnE.setFont(new Font("Times New Roman", Font.PLAIN, 14));
            btnE.setBounds(110, 60, 45, 45);
            contentPane.add(btnE);
            /**
             * 创建按钮button_4置于面板contentPane中,设置按钮的背景色、位置、宽高以及按钮中的字体位置、内容、样式
             */
            btnR = new JButton("R");
            btnR.setBackground(white);
            btnR.setVerticalAlignment(SwingConstants.TOP);
            btnR.setHorizontalAlignment(SwingConstants.LEADING);
            btnR.setFont(new Font("Times New Roman", Font.PLAIN, 14));
            btnR.setBounds(165, 60, 45, 45);
            contentPane.add(btnR);
            /**
             * 创建按钮button_5置于面板contentPane中,设置按钮的背景色、位置、宽高以及按钮中的字体位置、内容、样式
             */
            btnF = new JButton("F");
            btnF.setBackground(white);
            btnF.setVerticalAlignment(SwingConstants.TOP);
            btnF.setHorizontalAlignment(SwingConstants.LEADING);
            btnF.setFont(new Font("Times New Roman", Font.PLAIN, 14));
            btnF.setBounds(195, 125, 45, 45);
            contentPane.add(btnF);
            /**
             * 创建按钮button_6置于面板contentPane中,设置按钮的背景色、位置、宽高以及按钮中的字体位置、内容、样式
             */
            btnD = new JButton("D");
            btnD.setBackground(white);
            btnD.setVerticalAlignment(SwingConstants.TOP);
            btnD.setHorizontalAlignment(SwingConstants.LEADING);
            btnD.setFont(new Font("Times New Roman", Font.PLAIN, 14));
            btnD.setBounds(137, 125, 45, 45);
            contentPane.add(btnD);
     
            btnT = new JButton("T");
            btnT.setVerticalAlignment(SwingConstants.TOP);
            btnT.setHorizontalAlignment(SwingConstants.LEADING);
            btnT.setFont(new Font("Times New Roman", Font.PLAIN, 14));
            btnT.setBackground(white);
            btnT.setBounds(220, 60, 45, 45);
            contentPane.add(btnT);
     
            btnY = new JButton("Y");
            btnY.setVerticalAlignment(SwingConstants.TOP);
            btnY.setHorizontalAlignment(SwingConstants.LEADING);
            btnY.setFont(new Font("Times New Roman", Font.PLAIN, 14));
            btnY.setBackground(white);
            btnY.setBounds(275, 60, 45, 45);
            contentPane.add(btnY);
     
            btnU = new JButton("U");
            btnU.setVerticalAlignment(SwingConstants.TOP);
            btnU.setHorizontalAlignment(SwingConstants.LEADING);
            btnU.setFont(new Font("Times New Roman", Font.PLAIN, 14));
            btnU.setBackground(white);
            btnU.setBounds(330, 60, 45, 45);
            contentPane.add(btnU);
     
            btnI = new JButton("I");
            btnI.setVerticalAlignment(SwingConstants.TOP);
            btnI.setHorizontalAlignment(SwingConstants.LEADING);
            btnI.setFont(new Font("Times New Roman", Font.PLAIN, 14));
            btnI.setBackground(white);
            btnI.setBounds(385, 60, 45, 45);
            contentPane.add(btnI);
     
            btnO = new JButton("O");
            btnO.setVerticalAlignment(SwingConstants.TOP);
            btnO.setHorizontalAlignment(SwingConstants.LEADING);
            btnO.setFont(new Font("Times New Roman", Font.PLAIN, 14));
            btnO.setBackground(white);
            btnO.setBounds(440, 60, 46, 45);
            contentPane.add(btnO);
     
            btnP = new JButton("P");
            btnP.setVerticalAlignment(SwingConstants.TOP);
            btnP.setHorizontalAlignment(SwingConstants.LEADING);
            btnP.setFont(new Font("Times New Roman", Font.PLAIN, 14));
            btnP.setBackground(white);
            btnP.setBounds(495, 60, 45, 45);
            contentPane.add(btnP);
     
            btnA = new JButton("A");
            btnA.setVerticalAlignment(SwingConstants.TOP);
            btnA.setHorizontalAlignment(SwingConstants.LEADING);
            btnA.setFont(new Font("Times New Roman", Font.PLAIN, 14));
            btnA.setBackground(white);
            btnA.setBounds(23, 125, 45, 45);
            contentPane.add(btnA);
     
            btnS = new JButton("S");
            btnS.setVerticalAlignment(SwingConstants.TOP);
            btnS.setHorizontalAlignment(SwingConstants.LEADING);
            btnS.setFont(new Font("Times New Roman", Font.PLAIN, 14));
            btnS.setBackground(white);
            btnS.setBounds(82, 125, 45, 45);
            contentPane.add(btnS);
     
            btnG = new JButton("G");
            btnG.setVerticalAlignment(SwingConstants.TOP);
            btnG.setHorizontalAlignment(SwingConstants.LEADING);
            btnG.setFont(new Font("Times New Roman", Font.PLAIN, 14));
            btnG.setBackground(white);
            btnG.setBounds(251, 125, 45, 45);
            contentPane.add(btnG);
     
            btnH = new JButton("H");
            btnH.setVerticalAlignment(SwingConstants.TOP);
            btnH.setHorizontalAlignment(SwingConstants.LEADING);
            btnH.setFont(new Font("Times New Roman", Font.PLAIN, 14));
            btnH.setBackground(white);
            btnH.setBounds(306, 125, 45, 45);
            contentPane.add(btnH);
     
            btnJ = new JButton("J");
            btnJ.setVerticalAlignment(SwingConstants.TOP);
            btnJ.setHorizontalAlignment(SwingConstants.LEADING);
            btnJ.setFont(new Font("Times New Roman", Font.PLAIN, 14));
            btnJ.setBackground(white);
            btnJ.setBounds(361, 125, 45, 45);
            contentPane.add(btnJ);
     
            btnK = new JButton("K");
            btnK.setVerticalAlignment(SwingConstants.TOP);
            btnK.setHorizontalAlignment(SwingConstants.LEADING);
            btnK.setFont(new Font("Times New Roman", Font.PLAIN, 14));
            btnK.setBackground(white);
            btnK.setBounds(416, 125, 47, 45);
            contentPane.add(btnK);
     
            btnL = new JButton("L");
            btnL.setVerticalAlignment(SwingConstants.TOP);
            btnL.setHorizontalAlignment(SwingConstants.LEADING);
            btnL.setFont(new Font("Times New Roman", Font.PLAIN, 14));
            btnL.setBackground(white);
            btnL.setBounds(471, 125, 45, 45);
            contentPane.add(btnL);
     
            btnZ = new JButton("Z");
            btnZ.setVerticalAlignment(SwingConstants.TOP);
            btnZ.setHorizontalAlignment(SwingConstants.LEADING);
            btnZ.setFont(new Font("Times New Roman", Font.PLAIN, 14));
            btnZ.setBackground(white);
            btnZ.setBounds(39, 190, 45, 45);
            contentPane.add(btnZ);
     
            btnX = new JButton("X");
            btnX.setVerticalAlignment(SwingConstants.TOP);
            btnX.setHorizontalAlignment(SwingConstants.LEADING);
            btnX.setFont(new Font("Times New Roman", Font.PLAIN, 14));
            btnX.setBackground(white);
            btnX.setBounds(107, 190, 45, 45);
            contentPane.add(btnX);
     
            btnC = new JButton("C");
            btnC.setVerticalAlignment(SwingConstants.TOP);
            btnC.setHorizontalAlignment(SwingConstants.LEADING);
            btnC.setFont(new Font("Times New Roman", Font.PLAIN, 14));
            btnC.setBackground(white);
            btnC.setBounds(178, 190, 45, 45);
            contentPane.add(btnC);
     
            btnV = new JButton("V");
            btnV.setVerticalAlignment(SwingConstants.TOP);
            btnV.setHorizontalAlignment(SwingConstants.LEADING);
            btnV.setFont(new Font("Times New Roman", Font.PLAIN, 14));
            btnV.setBackground(white);
            btnV.setBounds(250, 190, 45, 45);
            contentPane.add(btnV);
     
            btnB = new JButton("B");
            btnB.setVerticalAlignment(SwingConstants.TOP);
            btnB.setHorizontalAlignment(SwingConstants.LEADING);
            btnB.setFont(new Font("Times New Roman", Font.PLAIN, 14));
            btnB.setBackground(white);
            btnB.setBounds(315, 190, 45, 45);
            contentPane.add(btnB);
     
            btnN = new JButton("N");
            btnN.setVerticalAlignment(SwingConstants.TOP);
            btnN.setHorizontalAlignment(SwingConstants.LEADING);
            btnN.setFont(new Font("Times New Roman", Font.PLAIN, 14));
            btnN.setBackground(white);
            btnN.setBounds(382, 190, 47, 45);
            contentPane.add(btnN);
     
            btnM = new JButton("M");
            btnM.setVerticalAlignment(SwingConstants.TOP);
            btnM.setHorizontalAlignment(SwingConstants.LEADING);
            btnM.setFont(new Font("Times New Roman", Font.PLAIN, 14));
            btnM.setBackground(white);
            btnM.setBounds(449, 190, 48, 45);
            contentPane.add(btnM);
            /**
             * 创建面板panel置于面板contentPane中,设置面板panel的位置、宽高、TitledBorder、背景色以及布局方式(边界布局)
             */
            JPanel panel = new JPanel();
            panel.setBorder(new TitledBorder(null, "文本显示区", TitledBorder.LEADING, TitledBorder.TOP, null, null));
            panel.setBackground(Color.WHITE);
            panel.setBounds(0, 0, 540, 45);
            contentPane.add(panel);
            panel.setLayout(new BorderLayout(0, 0));
     
            /**
             * 创建文本框textField置于面板panel的中间
             */
            textField = new JTextField();
            textField.addKeyListener(new KeyAdapter() { // 文本框添加键盘事件的监听
                char word;
     
                @Override
                public void keyPressed(KeyEvent e) { // 按键被按下时被触发
                    word = e.getKeyChar();// 获取按下键表示的字符
                    for (int i = 0; i < btns.size(); i++) {// 遍历存储按键ID的ArrayList集合
                        // 判断按键是否与遍历到的按键的文本相同
                        if (String.valueOf(word).equalsIgnoreCase(btns.get(i).getText())) {
                            btns.get(i).setBackground(green);// 将指定按键颜色设置为绿色
                        }
                    }
                }
     
                @Override
                public void keyReleased(KeyEvent e) { // 按键被释放时被触发
                    word = e.getKeyChar();// 获取释放键表示的字符
                    for (int i = 0; i < btns.size(); i++) {// 遍历存储按键ID的ArrayList集合
                        // 判断按键是否与遍历到的按键的文本相同
                        if (String.valueOf(word).equalsIgnoreCase(btns.get(i).getText())) {
                            btns.get(i).setBackground(white);// 将指定按键颜色设置为白色
                        }
                    }
                }
            });
            panel.add(textField, BorderLayout.CENTER);
            textField.setColumns(10);
        }
    }

    结果: 

            3.MouseEvent鼠标事件 


    【例18.27】捕捉鼠标在窗体中的行为
    代码:

    结果:

    文章知识点与官方知识档案匹配,可进一步学习相关知识
    Java技能树首页概览134124 人正在系统学习中

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值