本周主要学习的是选择框、单选框和单选按钮。这些都是选择组件,选择组件有两种状态,一种是选中(on),另一种是未选中(off)。接下来仔细总结一下。
选择框(JCheckBox) 又称为复选框,它的选中与否开状是一个小方框,被选中则在框中打勾。当在一个容器中有多个选择框,同时可以有多个选择框被选中,这样的选择框,称复选框。与选择框相关的接口是ItemListener,事件类是ItemEvent。
JCheckBox类常用的构造方法有以下3个:
JCheckBox():用空标题构造选择框。
JCheckBox(String s):用给定的标题s构造选择框。
JCheckBox(String s, boolean b):用给定的标题s构造选择框,参数b设置选中与否的初始状态。
单选框:当在一个容器中放入多个选择框,且没有ButtonGroup对象将它们分组,则可以同时选中多个选择框。如果使用ButtonGroup对象将选择框分组,同一时刻组内的多个
选择框只允许有一个被选中,称同一组内的选择框为单选框。单选框分组的方法是先创建ButtonGroup对象,然后将希望为同组的选择框添加到同一个ButtonGroup对象中
单选按钮(JRadioButton)的功能与单选框相似。使用单选按钮的方法是将一些单选按钮用ButtonGroup对象分组,使同一组的单选按钮只允许有一个被选中。单选按钮与单选
框的差异是显示的样式不同,单选按钮是一个圆形的按钮,单选框是一个小方框。
JRadioButton类的常用构造方法有以下几个:
JRadioButton():用空标题构造单选按钮。
JRadioButton(String s):用给定的标题s构造单选按钮。
JRadioButton(String s,boolean b):用给定的标题s构造单选按钮,参数b设置选中与否的初始状态。
单选按钮使用时需要使用ButtonGroup将单选按钮分组,单选按钮的分组方法是先创建对象,然后将同组的单选按钮添加到同一个ButtonGroup对象中。
列表框(JList):它可以同时将多个选项信息以列表的方式展现给顾客。它的常用构造方法如下:
public JList(ListModel dateModel):根据ListModel构造JList。
public JList(Object[] listDate):根据对象数组构造JList。
package demo; import javax.swing.*; public class Calculator { public static void main(String[] args) { javax.swing.SwingUtilities.invokeLater(new Runnable() { public void run() { createGUI(); } }); } protected static void createGUI() { myFrame frame = new myFrame("Swing Demo"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setSize(600,400); frame.setVisible(true); } }
package demo; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.*; public class myFrame extends JFrame{ JCheckBox checkbox = new JCheckBox( "请输入邮箱地址" ); JTextField email = new JTextField( 16 ); public myFrame(String title) { super (title); Container contentPane = getContentPane(); contentPane.setLayout( new FlowLayout()); contentPane.add(checkbox); contentPane.add(email); checkbox.setSelected( true ); email.setToolTipText( "请输入邮箱地址" ); checkbox.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent arg0) { email.setEnabled(checkbox.isSelected()); } }); } } |
运行截图:
1 package demo; 2 3 import javax.swing.*; 4 5 public class Calculator 6 { 7 public static void main(String[] args) 8 { 9 JFrame j1 = new JFrame("Box"); 10 j1.setSize(200, 200); 11 JPanel j2 = new JPanel(); 12 JRadioButton c1 = new JRadioButton("see you again",true); 13 JRadioButton c2 = new JRadioButton("Rolling in the deep"); 14 JRadioButton c3 = new JRadioButton("all falls down"); 15 JRadioButton c4 = new JRadioButton("apoligize"); 16 17 ButtonGroup group = new ButtonGroup(); 18 group.add(c1); 19 group.add(c2); 20 group.add(c3); 21 group.add(c4); 22 23 JLabel l1 = new JLabel("你更喜欢哪首歌:"); 24 j2.add(l1); 25 j2.add(c1); 26 j2.add(c2); 27 j2.add(c3); 28 j2.add(c4); 29 30 j1.add(j2); 31 j1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 32 j1.setVisible(true); 33 } 34 }
运行截图
package demo; import java.awt.*; import javax.swing.*; import javax.swing.border.EmptyBorder; public class Calculator extends JFrame{ public Calculator(){ this.setTitle("列表框使用"); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setBounds(100, 100, 250, 130); JPanel contentPane=new JPanel(); contentPane.setBorder(new EmptyBorder(5,5,5,5)); this.setContentPane(contentPane); contentPane.setLayout(new FlowLayout(FlowLayout.CENTER,5,5)); JLabel label=new JLabel("证件类型:"); contentPane.add(label); JList list=new JList(new String[]{"身份证","驾驶证","军官证"}); contentPane.add(list); this.setVisible(true); } public static void main(String[]args){ Calculator example=new Calculator(); } }
运行截图