您的位置:首页 > 编程语言 > Java开发

java教程:JComboBox(选择框)组件使用实例|方法

2013-10-18 18:48 661 查看
转自:http://www.isstudy.com/java/2005.html
JComboBox(选择框)组件

JComboBox组件实现一个选择框,用户可以从下拉列表中选择相应的值,该选择框还可以设置为可编辑,当设置为可编辑状态时,用户可以在选择框中输入相应的值。JComboBox类提供的常用构造方法如表1所示。



表1 JComboBox类的常用构造方法

在创建选择框时,可以通过构造函数直接指定该选择框包含的选项,例如下面的代码,将创建一个包含选项“男”和“女”的选择框:

String[] sexs = { "男", "女" };

JComboBox sexComboBox = new JComboBox(sexs);

也可以通过方法addItem()或insertItemAt()向选择框中添加选项,以及通过方法setSelected Item()或setSelectedIndex()设置选择框的默认选项,还可以通过方法setEditable()将选择框设置为可编辑的,即选择框可以接受用户输入的信息。JComboBox类提供的常用构造方法如表2所示。



表2 JComboBox类的常用方法

可以通过ActionListener侦听器或ItemListener侦听器捕获选择框被修改的事件,它们的区别是ActionListener侦听器只能捕获到一次ActionEvent事件,不过当选择框的选项为“硕士”时,如果重新选中选项列表中的“硕士”选项,ActionListener侦听器依然会捕获到一次ActionEvent事件,而ItemListener侦听器只捕获选择框真正被修改的ItemEvent事件。但是ItemListener侦听器将捕获到两次ItemEvent事件,第一次为被修改的选项触发的,第二次是新选中的选项触发的。

在利用ItemListener侦听器捕获选择框被修改的事件时,可以通过ItemEvent事件的对象,获得触发此次事件的相关信息,例如通过getItem()方法获得选项内容;通过getStateChange()方法获得选项状态,如果是由被修改的选项触发的,则返回2,此时与静态常量DESELECTED的值相等;如果是由新选中的选项触发的,则返回1,此时与静态常量SELECTED的值相等。假设为上面创建的性别选择框添加一个下面代码所示的侦听器:

sexComboBox.addItemListener(new ItemListener() {

public void itemStateChanged(ItemEvent e) {

System.out.print("Item=" + e.getItem());

System.out.println(" StateChange=" + e.getStateChange());

}

});

当将选择框的选项从“男”修改为“女”时,在控制台将输出如下信息:

Item=男 StateChange=2

Item=女 StateChange=1

下面将通过一个例子,讲解JComboBox组件的使用方法。

首先创建一个用来填写学历的选择框,选择框包含的学历选项在创建选择框时通过一个数组初始化;然后又分别为选择框添加了一个“其他”选项和“请选择”选项,其中“其他”选项添加到选项列表的尾部,“请选择”选项添加到索引值为0的位置,即选项列表的最前端,并设置“请选择”选项为默认选项,如果不设置“请选择”选项为默认选项,在这里“本科”选项将是默认选项,代码如下:

StudySwingsrccommwqIndex.java关键代码:

String[] schoolage = { "本科", "硕士", "博士" };

schoolageComboBox = new JComboBox(schoolage);

schoolageComboBox.addItem("其他");

schoolageComboBox.insertItemAt("请选择", 0);

schoolageComboBox.setSelectedIndex(0);

下面利用ItemListener侦听器编写捕获学历选择框被修改的事件,当修改为“其他”选项时,将选择框设置为可编辑,并将选项的内容设置为空,否则为不可编辑,代码如下:

StudySwingsrccommwqIndex.java关键代码:

schoolageComboBox.addItemListener(new ItemListener() {

public void itemStateChanged(ItemEvent e) {

if (e.getStateChange() == ItemEvent.SELECTED) { // 查看是否为新选中的选项触发

if (e.getItem().equals("其他") || e.getItem().equals("")) { // 查看触发的选项

schoolageComboBox.setEditable(true); // 设置选择框为可编辑

schoolageComboBox.setSelectedItem(""); // 将选项值修改为0字节

} else {

schoolageComboBox.setEditable(false); // 设置选择框为不可编辑

}

}

}

});

注意:

当将选项的内容设置为空时,也会触发ItemEvent事件,所以在查看触发的选项时加入了代码“e.getItem().equals("")”。

运行该例子,当选中选项“硕士”时的效果如图1所示,当选中选项“其他”时,选择框的内容将变为空白,图2中的“大专”为用户输入的内容。



图1 选定选择框



图2 编辑选择框

完整代码:

StudySwingsrccommwqIndex.java完整代码:

package com.mwq;

import java.awt.Dimension;

import java.awt.Toolkit;

import java.awt.event.ItemEvent;

import java.awt.event.ItemListener;

import javax.swing.JComboBox;

import javax.swing.JFrame;

import javax.swing.JLabel;

public class Index {

private JLabel schoolageLabel;

private JComboBox schoolageComboBox;

public void add(JFrame frame) {

frame.setTitle("选择框的使用方法");

frame.setLayout(null);

schoolageLabel = new JLabel("学历:");

schoolageLabel.setBounds(135, 120, 40, 20);

String[] schoolage = { "本科", "硕士", "博士" };

schoolageComboBox = new JComboBox(schoolage);

schoolageComboBox.setBounds(185, 120, 80, 20);

schoolageComboBox.addItem("其他");

schoolageComboBox.insertItemAt("请选择", 0);

schoolageComboBox.setSelectedIndex(0);

schoolageComboBox.addItemListener(new ItemListener() {

public void itemStateChanged(ItemEvent e) {

if (e.getStateChange() == ItemEvent.SELECTED) {// 查看是否为新选中的选项触发的

if (e.getItem().equals("其他") || e.getItem().equals("")) {// 查看触发的选项

schoolageComboBox.setEditable(true);// 设置选择框为可编辑的

schoolageComboBox.setSelectedItem("");// 将选项值修改为0字节

} else {

schoolageComboBox.setEditable(false);// 设置选择框为不可编辑的

}

}

}

});

frame.add(schoolageLabel);

frame.add(schoolageComboBox);

}

public static void main(String[] args) {

JFrame frame = new JFrame("利用JFrame创建窗口");// 创建指定标题的JFrame窗口对象

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);// 关闭按钮的动作为退出窗口

frame.setSize(400, 300);// 设置窗口大小

Dimension displaySize = Toolkit.getDefaultToolkit().getScreenSize();// 获得显示器大小对象

Dimension frameSize = frame.getSize();// 获得窗口大小对象

if (frameSize.width > displaySize.width)

frameSize.width = displaySize.width;// 窗口的宽度不能大于显示器的宽度

if (frameSize.height > displaySize.height)

frameSize.height = displaySize.height;// 窗口的高度不能大于显示器的高度

frame.setLocation((displaySize.width - frameSize.width) / 2,

(displaySize.height - frameSize.height) / 2);// 设置窗口居中显示器显示

Index index = new Index();

index.add(frame);// 向JFrame窗口添加标签

frame.setVisible(true);// 设置窗口为可见的,默认为不可见

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: