我有一个JComboBox
这些Integer
s的DefaultComboBoxModel
:为什么JComboBox忽略空值状态?
{null, 1, 2, 3, 4, 5, 6, 7, 8, 9}
说我有5
在我JComboBox
和我点击JComboBox
并选择2
,然后在下面的意志dispay程序:
5 ->
-> 2
这里是程序:
import javax.swing.*;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import static java.lang.System.out;
public class Test {
public static void main(String[] args){
final JComboBox<Integer> cb = new JComboBox<>();
cb.setModel(new DefaultComboBoxModel<>(new Integer[]{null, 1, 2, 3, 4, 5, 6, 7, 8, 9}));
cb.addItemListener(new ItemListener() {
@Override
public void itemStateChanged(ItemEvent e) {
switch (e.getStateChange()) {
case ItemEvent.DESELECTED:
out.format("%s ->\n", e.getItem());
break;
case ItemEvent.SELECTED:
out.format(" -> %s\n", e.getItem());
break;
}
}
});
final JFrame win = new JFrame();
win.setBounds(800,400,30,70);
win.add(cb);
win.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
win.setVisible(true);
}
}
什么是我不明白,这就是为什么当值最初null
(和它,因为它是模型的数组中的第一个值),输出为
-> 3
含义ItemListener
被调用一次,只有一个ItemEvent.SELECTED
状态。为什么与null
(例如,打印null ->
)不一样,ItemEvent.DESELECTED
与数字一样被称为?
它去的其他方式也一样,如果我最初在JComboBox
有5
,我选择了空值(即null
),那么我在控制台看到的是:
5 ->
那么,为什么JComboBox
忽略null
值状态? the docs似乎没有说任何关于它。