无论什么时候做出选择,我都试图让事件发生JComboBox
.
我遇到的问题是没有明显的addSelectionListener()
方法.
我试过用actionPerformed()
,但它永远不会开火.
如果没有超越模型JComboBox
,我就没有想法了.
如何获得有关选择更改的通知JComboBox
?**
编辑:我要道歉.事实证明我使用了一个行为不端的子类JComboBox
,但是我会留下问题,因为你的答案是好的.
Java 7中的JCombobox已经更新为使用泛型 - 我一直认为它有点疏忽,它还没有,所以我很高兴看到这种变化.
但是,当试图以这种方式使用JCombobox时,我意识到我期望使用这些泛型类型的方法仍然只是返回Object.
这究竟是为什么?对我来说,这似乎是一个愚蠢的设计决定.我意识到底层的ListModel有一个通用的getElementAt()
方法,所以我会用它来代替 - 但它有点迂回的做法,看起来它可能在JComboBox本身上被改变了.
我正在使用带有ItemListener的JComboBox.更改值时,将调用itemStateChanged事件两次.第一个调用,ItemEvent显示所选的原始项目.第二次,它显示用户刚刚选择的项目.这是一些测试人员代码:
public Tester(){
JComboBox box = new JComboBox();
box.addItem("One");
box.addItem("Two");
box.addItem("Three");
box.addItem("Four");
box.addItemListener(new ItemListener(){
public void itemStateChanged(ItemEvent e){
System.out.println(e.getItem());
}
});
JFrame frame = new JFrame();
frame.getContentPane().add(box);
frame.pack();
frame.setVisible(true);
}
Run Code Online (Sandbox Code Playgroud)
因此,当我将组合框从"一"改为"三"时,控制台显示:
One
Three
Run Code Online (Sandbox Code Playgroud)
有没有一种方法我可以使用ItemEvent告诉它,它是第二项(即用户选择的项目)?如果有人可以解释为什么它被调用两次,那也会很好!
谢谢
我想用一个来填充a java.swing JComboBox
的值Enum
.
例如
public enum Mood { HAPPY, SAD, AWESOME; }
Run Code Online (Sandbox Code Playgroud)
并将这三个值填充为只读JComboBox
.
谢谢!
我想通过值而不是索引在JComboBox中设置所选索引.怎么做?例
public class ComboItem {
private String value;
private String label;
public ComboItem(String value, String label) {
this.value = value;
this.label = label;
}
public String getValue() {
return this.value;
}
public String getLabel() {
return this.label;
}
@Override
public String toString() {
return label;
}
}
JComboBox test = new JComboBox();
test.addItem(new ComboItem(0, "orange"));
test.addItem(new ComboItem(1, "pear"));
test.addItem(new ComboItem(2, "apple"));
test.addItem(new ComboItem(3, "banana"));
test.setSelectedItem("banana");
Run Code Online (Sandbox Code Playgroud)
好的,我已经修改了一下我的问题.我忘记了我的JComboBox里面有一个自定义项目,这让它变得有点困难.我不能做setSelectedItem,因为我在每个项目中都有一个ComboItem.那么,我怎么做到这一点?
我成功地从数据库中获取数据值.我还将它们存储在一个String[]
数组中.我需要加载String数组作为JComboBox
响应key action执行的项目.JComboBox
如果取出的键取决于按下的键,如何重新加载按键的项目.相反,我需要动态刷新JComboBox
项目.
我需要使用ArrayList填充JComboBox.有没有办法做到这一点?
如何在VB dot net JComboBox
中的Netbeans 7.1中执行可编辑的自动完成ComboBox
.我有一个带有列表绑定的组合框,我想通过只键入列表中项目的第一个字母来选择项目,例如,如果列表有kitten
,则应该在我键入时选择它ki
.
除了迭代后者之外,还有一种简单的方法可以检查JComboBox中是否已存在某个项目吗?这就是我想要做的事情:
Item item = ...;
boolean exists = false;
for (int index = 0; index < myComboBox.getItemCount() && !exists; index++) {
if (item.equals(myComboBox.getItemAt(index)) {
exists = true;
}
}
if (!exists) {
myComboBox.addItem(item);
}
Run Code Online (Sandbox Code Playgroud)
谢谢!
我在面板上使用了一个组合框,据我所知,我们只能添加带有文本的项目
comboBox.addItem('item text');
Run Code Online (Sandbox Code Playgroud)
但有时我需要使用项目和项目文本的一些值,如在html中选择:
<select><option value="item_value">Item Text</option></select>
Run Code Online (Sandbox Code Playgroud)
有没有办法在组合框项目中设置值和标题?
现在我使用哈希来解决这个问题.
java ×10
jcombobox ×10
swing ×9
itemlistener ×2
arraylist ×1
autocomplete ×1
enums ×1
generics ×1
java-7 ×1