java JcomboBox 如何能手动输入在下拉列表 生效的选项呢?
1个回答
展开全部
监听事件,改变combobox的model
不过把combobox设置成editable貌似用户体现不太好的样子....
Object[] values = new Object[] { "a", "b", "c", };
final DefaultComboBoxModel model = new DefaultComboBoxModel(values);
JComboBox combo = new JComboBox(model);
combo.setEditable(true);
combo.addItemListener(new ItemListener() {
public void itemStateChanged(ItemEvent e) {
if (model.getIndexOf(e.getItem()) < 0) {
model.addElement(e.getItem());
}
}
});
不过把combobox设置成editable貌似用户体现不太好的样子....
Object[] values = new Object[] { "a", "b", "c", };
final DefaultComboBoxModel model = new DefaultComboBoxModel(values);
JComboBox combo = new JComboBox(model);
combo.setEditable(true);
combo.addItemListener(new ItemListener() {
public void itemStateChanged(ItemEvent e) {
if (model.getIndexOf(e.getItem()) < 0) {
model.addElement(e.getItem());
}
}
});
更多追问追答
追问
e.getItem() 内容是对象 对吗?若需将它 转换为 整型数字 该如何实现呢?
追答
——e.getItem() 内容是对象 对吗?
没错,e.getItem()是下拉框的内容
但是你要知道这个内容来自于哪里,它来自于你提供的对象。我在一开始定义了一个数组:
Object[] values = new Object[] { "a", "b", "c", };
这个数组里面对象的类型是String,所以你getItem得到的是String
如果我一开始values里面放整数,那么你会拿到Integer对象
values甚至可以是任何类的对象,下拉框在现实它们的时候会调用toString来显示
但是对于用户动态输入的值,你一定要把它当做String对待(尽管实验证明不是如此,但是那个很复杂,先不管),因为用户无论怎么输入,也不可能输入一个对象,他只能输入字符串。所以这个时候你必须首先调用e.getItem().toString()来拿到新增项目的字符串表达,然后用Integer.parseInt来转换。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询