• 第十三周


    1、布局管理器概念:各组件在容器中的大小以及摆放位置。实现跨平台特性并获得动态布局的效果;Java组件布局由布局管理器对象来管理;布局管理器会确定组件打大小和位置;在容器发生变化是做出动态调整。

    2、布局管理器的分类

           FlowLayout:流式布局管理器

           BorderLayout:边界布局管理器

           GridLayout:网格布局管理器

           GridBagLayout:网格组布局管理器

           GardLayout:卡片布局管理器

           BoxLayout:箱式布局管理器

           SpringLayout:弹簧布局管理器

    1、FlowLayout:流式布局管理器

         组件加入容器的顺序是从左到右,容器大小改变时组件大小不改变,位置会改变
    网格包布局管理器

    import java.awt.Button;
    import java.awt.Font;
    import java.awt.GridBagConstraints;
    import java.awt.GridBagLayout;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import javax.swing.ButtonGroup;
    import javax.swing.JCheckBox;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JOptionPane;
    import javax.swing.JRadioButton;
    
    public class wenjuan {
        public static void main(String[] args) {
            JFrame jf=new JFrame();
            jf.setSize(550,650);
            jf.setLocation(550,100);
            /**
             * GridBagLayout(网格布布局):
             *     允许网格中的组件大小各不相同,允许一个组件跨越一个或多个网格。
             * 使用GridBagLayout的步骤:
             *     1、创建GridBagLayout布局管理器,使容器采用该布局管理器:
             *         GridBagLayout layout=new GridBagLayout();
             *         jf.setLayout(layout);
             *     2、创建GridBagConstraints对象(布局约束条件),并设置该对象的相关属性
             *         GridBagConstraints c=new GridBagConstraints();
             *          c.gridx=1;设置网格的左上角横向索引;
             *          c.gridy=;设置网格的左上角纵向索引;
             *          c.gridwidth=1;设置组件横向跨越网格;
             *          c.gridheight=1;设置组件纵向跨越网格;
             *      3、调用GridBagLayout对象的setConstraints()方法建立GridBagConstraints对象和受控组件之间的联系。
             *          layout.setConstraints(ckb1,c);
             *      4、向容器中添加组件。
             *        jf.add(ckb1);
             */
            GridBagLayout layout=new GridBagLayout();
            GridBagConstraints c=new GridBagConstraints();
            jf.setLayout(layout);
            /**
             * fill的值:(组件填充网格方式)
             * NONE:不改变组件大小
             * HORIZONTAL:水平填充
             * VERTICAL:垂直填充
             * BOTH:水平,垂直都填充
             */
            c.fill=GridBagConstraints.NONE;
            c.gridwidth=GridBagConstraints.REMAINDER;
            /**
             * weightx,weighty:设置权重
             * c.gridwidth=GridBagConstraints.REMAINDER;
             * 声明当前组件为最后一个
             * gridwidth=1:横向跨越1个方格
             * gridheight=1:纵向跨越1个方格
             * gridx,gridy:设置组件的横向,纵向索引。
             */
            c.weightx=3;
            c.weighty=1;
            JLabel bq=new JLabel("问卷调查");
            /**
             * Font(字体)构造方法:
             *         public Font(Sring familyName,int style,int size);
             * familyName:字体类型(宋体,...)
             * style:字体风格(普通:Font.PLAIN;加粗:Font.BOLD;斜体:Font.ITALIC;粗斜体:Font.BOLD+Font.ITALIC)
             * size:字体大小
             */
            bq.setFont(new Font("华文仿宋",Font.PLAIN,30));
            layout.setConstraints(bq,c);
            jf.add(bq);
            c.weightx=1;
            c.weighty=1;
            c.fill=GridBagConstraints.BOTH;
            JLabel bq1=new JLabel("1、第一个多选:");
            layout.setConstraints(bq1,c);
            jf.add(bq1);
            c.gridwidth=1;
            /**
             * 按钮有三类:JButton(普通按钮),JCheckBox(多选按钮),JRadioButton(单选按钮)
             * Icon getIcon()和void setIcon(Icon,icon):设置或者获取按钮图标
             * String getText()和void setText(String text):设置或者获取按钮文本
             * void setEnable(boolean b):启用(b为true)或禁用(b为false)按钮
             * boolean isSelected():返回按钮状态(trua为选中,false为未选中)
             * setSelected(boolean b):设置按钮状态(b为trua选中,b为false未选中)
             */
            final JCheckBox ckb1=new JCheckBox("第一个多选的第一个选项");
            layout.setConstraints(ckb1,c);
            jf.add(ckb1);
            final JCheckBox ckb2=new JCheckBox("第一个多选的第二个选项");
            layout.setConstraints(ckb2,c);
            jf.add(ckb2);
            c.gridwidth=GridBagConstraints.REMAINDER;
            final JCheckBox ckb3=new JCheckBox("第一个多选的第三个选项");
            layout.setConstraints(ckb3,c);
            jf.add(ckb3);
            JLabel bq2=new JLabel("2、第二个多选:");
            layout.setConstraints(bq2,c);
            jf.add(bq2);
            c.gridwidth=1;
            final JCheckBox ckb4=new JCheckBox("第二个多选的第一个选项");
            layout.setConstraints(ckb4,c);
            jf.add(ckb4);
            final JCheckBox ckb5=new JCheckBox("第二个多选的第二个选项");
            layout.setConstraints(ckb5,c);
            jf.add(ckb5);
            c.gridwidth=GridBagConstraints.REMAINDER;
            final JCheckBox ckb6=new JCheckBox("第二个多选的第三个选项");
            layout.setConstraints(ckb6,c);
            jf.add(ckb6);
            JLabel bq3=new JLabel("3、第一个单选:");
            layout.setConstraints(bq3,c);
            jf.add(bq3);
            c.gridwidth=1;
            /**
             * ButtonGroup(单选框):
             * 需要向其中添加JRadioButton(单选按钮)
             * 在同一个单选框中的JRadioButton按钮只能选一个;
             * 注:JRadioButton(单选按钮)需要添加两个地方:
             *     第一个为ButtonGroup(单选框),添加在一个结构中
             *     第二个为显示的地方,窗口或者容器
             */
            ButtonGroup g1=new ButtonGroup();
            final JRadioButton rdb1=new JRadioButton("第一个单选的第一个选项");
            g1.add(rdb1);
            layout.setConstraints(rdb1,c);
            jf.add(rdb1);
            final JRadioButton rdb2=new JRadioButton("第一个单选的第二个选项");
            g1.add(rdb2);
            layout.setConstraints(rdb2,c);
            jf.add(rdb2);
            c.gridwidth=GridBagConstraints.REMAINDER;
            final JRadioButton rdb3=new JRadioButton("第一个单选的第三个选项");
            g1.add(rdb3);
            layout.setConstraints(rdb3,c);
            jf.add(rdb3);
            JLabel bq4=new JLabel("4、第二个单选:");
            layout.setConstraints(bq4,c);
            jf.add(bq4);
            c.gridwidth=1;
            ButtonGroup g2=new ButtonGroup();
            final JRadioButton rdb4=new JRadioButton("第二个单选的第一个选项");
            g2.add(rdb4);
            layout.setConstraints(rdb4,c);
            jf.add(rdb4);
            final JRadioButton rdb5=new JRadioButton("第二个单选的第二个选项");
            g2.add(rdb5);
            layout.setConstraints(rdb5,c);
            jf.add(rdb5);
            c.gridwidth=GridBagConstraints.REMAINDER;
            final JRadioButton rdb6=new JRadioButton("第二个单选的第三个选项");
            g2.add(rdb6);
            layout.setConstraints(rdb6,c);
            jf.add(rdb6);
            c.gridwidth=1;
            c.weightx=1;
            c.gridx=0;
            c.fill=GridBagConstraints.NONE;
            Button but1=new Button("提交");
            layout.setConstraints(but1,c);
            jf.add(but1);
            c.gridx=2;
            c.gridwidth=GridBagConstraints.REMAINDER;
            Button but2=new Button("重置");
            layout.setConstraints(but2,c);
            jf.add(but2);
            but1.addActionListener(new ActionListener(){
                public void actionPerformed(ActionEvent arg0) {
                    int i=0;
                    if(ckb1.isSelected())
                        i++;
                    if(ckb2.isSelected())
                        i++;
                    if(ckb3.isSelected())
                        i++;
                    if(ckb4.isSelected())
                        i++;
                    if(ckb5.isSelected())
                        i++;
                    if(ckb6.isSelected())
                        i++;
                    if(rdb1.isSelected())
                        i+=2;
                    if(rdb4.isSelected())
                        i+=2;
                    JOptionPane.showMessageDialog(null,"你的得分为"+i+"分。");
                }
            });
            but2.addActionListener(new ActionListener(){
                public void actionPerformed(ActionEvent arg0) {
                    ckb1.setSelected(false);
                    ckb2.setSelected(false);
                    ckb3.setSelected(false);
                    ckb4.setSelected(false);
                    ckb5.setSelected(false);
                    ckb6.setSelected(false);
                    rdb1.setSelected(false);
                    rdb2.setSelected(false);
                    rdb3.setSelected(false);
                    rdb4.setSelected(false);
  • 相关阅读:
    视觉(9)争取快点看完基于图论的立体匹配算法
    STL笔记(2) STL之父访谈录
    视觉(7)Computer vision from Wikipedia
    *NIX工具使用(1) Vim notes
    STL笔记(1)map
    AI杂谈(1) 你喜欢ML里的哪些模型?希望ML未来向什么方向发展?
    AI杂谈(3): dodo:人脸识别方法个人见解(zz from prfans)
    AI杂谈(2)请教支持向量机用于图像分类
    视觉(3)blepo
    windows编程(2)深入探讨MFC消息循环和消息泵
  • 原文地址:https://www.cnblogs.com/wangzihaojun/p/11913535.html
Copyright © 2020-2023  润新知