java網格包布局管理器


package qwer;

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);
                rdb5.setSelected(false);
                rdb6.setSelected(false);
            }
        });
        jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//關閉窗口時程序關閉;
        jf.setVisible(true);
    }
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM