我想让外面的代码也能实时获得box的内容,也就是每点击一次就变一次,但是实在不懂怎么实现,谢谢
JComboBox<String> choice = new JComboBox<String>();
choice.setBounds(20, 1, 81, 21);
choice.setFont(new Font("微软雅黑 Light", Font.PLAIN, 13));
choice.addItem("ID");
choice.addItem("商品名称");
frm_drop.getContentPane().add(choice);
choice.addItemListener(new ItemListener(){
public void itemStateChanged(ItemEvent e) {
switch ((String)choice.getSelectedItem()) {
case "ID":
break;
case "商品名称":
break;
default:
break;
}
}
});
定义一个全局的变量比如 String selected = null; 当选择了checkBox后,在itemStateChanged方法中,将选择的值赋值给selected 然后在其他地方需要用到的时候使用selected 进行判断即可
java.swingx.JComboBox
可以使用类似全局变量的方式,将JComboBox的选项信息保存在某个字段或属性中,在需要使用的时候直接调用即可。具体步骤如下:
定义一个类(如下例中的MyComboBox类),该类继承自JComboBox。在该类中添加一个成员变量(如下例中的selectedItem),用于保存选中的选项。并添加一个事件监听器(如下例中的addItemListener()方法),在选项发生变化时更新该成员变量的值。
在需要使用选项的地方,创建一个MyComboBox对象,在该对象上直接调用selectedItem字段即可获取选中的选项值。
示例代码如下:
import javax.swing.JComboBox;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
public class MyComboBox extends JComboBox {
private Object selectedItem;
public MyComboBox(Object[] items) {
super(items);
addItemListener(new ItemListener() {
@Override
public void itemStateChanged(ItemEvent e) {
if (e.getStateChange() == ItemEvent.SELECTED) {
selectedItem = getSelectedItem();
}
}
});
}
public Object getSelectedItem() {
return selectedItem;
}
}
// 在需要使用的地方
MyComboBox comboBox = new MyComboBox(new Object[]{"A", "B", "C"});
Object selectedItem = comboBox.getSelectedItem();
在上面的代码中,创建了一个名为MyComboBox的类,该类继承自JComboBox。在该类中添加了selectedItem成员变量,用于保存选中的选项值。同时添加了一个事件监听器,在选项发生变化时更新该成员变量的值。
在其它地方需要使用选项值时,创建一个MyComboBox对象,通过调用其getSelectedItem()方法即可获取选中的选项值。注意,在选项发生变化之前调用该方法得到的是null。