【发布时间】:2015-07-05 20:43:10
【问题描述】:
假设我有一个 JComboBox,其中包含向量中的元素...
public class Shade(){
//code for creating panels etc and other components/containers
JCheckBox primary = new JCheckBox("Primary", false);
Vector<String> colours = new Vector<String>();
}
public Shade(){
//setTitle, look&feel, defaultCloseOperation, Layouts etc etc...
colours.add(0, "Purple);
colours.add(1, "Red");
colours.add(2, "Blue");
colours.add(3, "Magenta");
JComboBox<String> colourSelector = new JComboBox<String>(colours);
}
如果选择了主 JCheckBox,我想从 JComboBox 中“隐藏”紫色和磁色,一旦取消选择主 JCheckBox,我想显示隐藏的元素,以便原始列表相关。
我试过这样做......
public class eventHandler implements itemListener(){
Shade refObj;
public eventHandler(Shade rinseFM){
refObj = rinseFM;
}
#Overriding abstract implemented method...
public void itemStateChanged(ItemEvent event){
if(refObj.primary.isSelected() == true){
refObj.colours.hide(// index of colours required to hide))
}
}
}
hide 方法实际上并不存在,有没有类似的东西。
【问题讨论】:
-
不确定
JComboBox是否存在这样的功能。您可能必须手动从模型中删除项目,然后在需要时添加它们。或者创建您自己的允许它的实现。据我所知,这是不支持的 -
如果我删除它们,当我取消选择该框时,它们将不会重新出现。这是一个问题,因为我不得不说 if(refObj.primary.isSelected() == false) //add what was removed 这将是一种乏味的方式来做我想做的事。您还可以详细说明创建我自己的实现吗?
标签: java vector jcombobox jcheckbox itemlistener