最近老师开始讲图形界面的知识,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();
}
}