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); } }