最近老师开始讲图形界面的知识,Java里的组件真的是太多,记不清楚.感觉就像背英语单词一样,记了忘,忘了记.新手上路,总有走不完的坑.

1.JComboBox

JComboBox简单说就是一个下拉列表框,可以一个一个的添加String参数作为选项,也能以数组方式在定义JComboBox实例的同时初始化.

一个一个添加String参数:

		JComboBox<String> comboBox = new JComboBox<String>();
		comboBox.addItem("身份证");
		comboBox.addItem("驾驶证");
		comboBox.addItem("军官证");

以数组方式在定义JComboBox实例的同时初始化:

   String[] items = new String[]{"身份证", "驾驶证",  "房产证"};
  JComboBox<String> comboBox = new JComboBox<String>(items);

效果如下图

JComBox也可以注册监听器,监听器的类型也有多种,下面仅以addActionListener()为例

comboBox.addActionListener(new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent e) {
				/* JOptionPane可以很容易地弹出一个标准对话框,提示用户输入一个值或通知他们一些事情 */
				if (JOptionPane.showConfirmDialog(null, "确定修改?", "标题", JOptionPane.YES_NO_OPTION) // 返回值为0或1
				== 0)
					JOptionPane.showMessageDialog(null, "修改成功!╮(╯▽╰)╭", "提示", JOptionPane.INFORMATION_MESSAGE);
			}
		});

效果图如下:

2.JCheckBox

JCheckBox是一个复选框,平常填问卷调查的时候,就可能会遇到以下情况

选中了就会有一个对勾,它就是一个复选框,两种状态,即选中与未选中,为什么叫复选框呢,是因为再次点击以后可以取消原来的设置

		JPanel panel = new JPanel();
		JCheckBox jcb1 = new JCheckBox("主站");// 定义一个复选框
		JCheckBox jcb2 = new JCheckBox("论坛");// 定义一个复选框
		panel.add(jcb1);
		panel.add(jcb2);

效果图如下:

这就是一组复选框,如果要限制为单选,也就是只能选择一个,需要借助ButtonGroup,名为一组按钮的集合,改为.

		JPanel panel = new JPanel();
		JCheckBox jcb1 = new JCheckBox("主站");// 定义一个复选框
		JCheckBox jcb2 = new JCheckBox("论坛");// 定义一个复选框
		
		**ButtonGroup group = new ButtonGroup();
		group.add(jcb1);
		group.add(jcb2);**
		
		panel.add(jcb1);
		panel.add(jcb2);

这样就只能选择其中的一个了.

JCheckBox也可以注册多种监听器,下面以addItemListener()为例

jcb1.addItemListener(new ItemListener() {
			@Override
			public void itemStateChanged(ItemEvent e) {
				if (jcb1.isSelected()) //复选框jcb1被选中
					jcb1.setBackground(Color.blue); //设置背景颜色为蓝色
				else
					jcb1.setBackground(null); //再次点击取消颜色设置
			}
		});
		jcb2.addItemListener(new ItemListener() {

			@Override
			public void itemStateChanged(ItemEvent e) {
				if (jcb2.isSelected())//复选框jcb2被选中
					jcb2.setBackground(Color.magenta);
				else
					jcb2.setBackground(null);//再次点击取消颜色设置
			}

		});

效果图如下:
单击选择:

单击选择:

不用addActionListener()的原因是因为,ActionListener连鼠标放上去都会触发,具体没有太去研究.

3.JRadioButton

单选框跟复选框不同还是因为不能通过再次点击取消选择如下图:

一般是一个圆形选择

		JRadioButton randioButton1 = new JRadioButton("Java"); //定义一个新的单选框
		JRadioButton randioButton2 = new JRadioButton("PHP");
		JRadioButton randioButton3 = new JRadioButton("C++");

同复选框一样,如果想控制多个单选框只能选择一个的话,也需要借助ButtonGroup

		ButtonGroup g = new ButtonGroup();
		g.add(randioButton1);
		g.add(randioButton2);
		g.add(randioButton3);

效果图如下:

同样的,也能够注册监听器

randioButton2.addChangeListener(new ChangeListener() {
			@Override
			public void stateChanged(ChangeEvent e) {
				if (randioButton2.isSelected())
					randioButton2.setBackground(Color.RED);
				else
					randioButton2.setBackground(null);
			}
		});

效果图如下:

4.最后附上一个可运行的,不知道有没有bug的完整代码,希望指正

package myComboBoxTest;

import java.awt.*;
import javax.swing.*;
import javax.swing.event.*;

public class JComboBoxDemo extends JFrame {
	private static final long serialVersionUID = 1L;
	public JComboBoxDemo() throws HeadlessException {
		super();
		this.setTitle("下拉框测试");
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		this.setLocationRelativeTo(null);
		this.setSize(300, 250);
	
		Container c = getContentPane();
		JPanel contentPane = new JPanel();

		JLabel label = new JLabel("证件类型:");
		contentPane.add(label);
		JComboBox<String> comboBox = new JComboBox<String>();
		comboBox.addItem("身份证");
		comboBox.addItem("驾驶证");
		comboBox.addItem("军官证");
		comboBox.setSize(5, 5);
		comboBox.setBackground(Color.green);
		contentPane.add(comboBox);


		JPanel panel = new JPanel();
		JCheckBox jcb1 = new JCheckBox("主站");// 定义一个复选框
		JCheckBox jcb2 = new JCheckBox("论坛");// 定义一个复选框
		ButtonGroup g = new ButtonGroup();
		g.add(jcb1);
		g.add(jcb2);
		panel.add(jcb1);
		jcb1.addItemListener(new ItemListener() {
			@Override
			public void itemStateChanged(ItemEvent e) {
				if (jcb1.isSelected())
					jcb1.setBackground(Color.blue);
				else
					jcb1.setBackground(null);
			}

		});
		panel.add(jcb2);
		jcb2.addItemListener(new ItemListener() {
			@Override
			public void itemStateChanged(ItemEvent e) {
				if (jcb2.isSelected())
					jcb2.setBackground(Color.magenta);
				else
					jcb2.setBackground(null);
			}
		});

		comboBox.addActionListener(new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent e) {
				/* JOptionPane可以很容易地弹出一个标准对话框,提示用户输入一个值或通知他们一些事情 */
				if (JOptionPane.showConfirmDialog(null, "确定修改?", "标题", JOptionPane.YES_NO_OPTION) // 返回值为0或1
				== 0)
					JOptionPane.showMessageDialog(null, "修改成功!╮(╯▽╰)╭", "提示", JOptionPane.INFORMATION_MESSAGE);
			}
		});

		JRadioButton randioButton1 = new JRadioButton("Java");
		JRadioButton randioButton2 = new JRadioButton("PHP");
		JRadioButton randioButton3 = new JRadioButton("C++");

		ButtonGroup group = new ButtonGroup();
		group.add(randioButton1);
		group.add(randioButton2);
		group.add(randioButton3);
		randioButton2.addChangeListener(new ChangeListener() {
			@Override
			public void stateChanged(ChangeEvent e) {
				if (randioButton2.isSelected())
					randioButton2.setBackground(Color.RED);
				else
					randioButton2.setBackground(null);
			}
		});
		panel.add(randioButton1);
		panel.add(randioButton2);
		panel.add(randioButton3);
		c.add(contentPane, "North");
		c.add(panel, "Center");
		this.setVisible(true); 
	}
	public static void main(String[] args) {
		@SuppressWarnings("unused")
		JComboBoxDemo example = new JComboBoxDemo();
	}
}

更多推荐

JComboBox,JCheckBox,JRadioButton菜鸟教程