从Java中的组合框获取int值

时间:2011-12-23 09:09:35

标签: java swing combobox

我一直在努力将数据库中的列中的int值转换为组合框,因此一旦选择,当我设计此解决方案时,值将在文本框中打印出来:

private void jComboBoxSNActionPerformed(java.awt.event.ActionEvent evt) {                                            

    JComboBox jComboBoxSN = (JComboBox) evt.getSource();
    int s_n = (Integer) jComboBoxSN.getSelectedItem();
    System.out.println("Number: " + s_n);
}

我想知道,这种可接受的编程还是错误的编程?

2 个答案:

答案 0 :(得分:3)

除非您确定您的组合框不能包含空值(如果您正在从数据库加载值,这是不确定的),那么您显示的代码并不安全。这一行:

int s_n = (Integer) jComboBoxSN.getSelectedItem();
如果在null项上执行,

将导致NullPointerException。 (自动取消装箱空原始包装器是NullPointerException)。

另一种方法是在将Integer转换为int之前检查null:

Integer i = (Integer)jComboBoxSN.getSelectedItem();
if (i != null) {
    int s_n = i;  // or s_n = i.intValue();
}

但是,我认为这样的事情会更合适:

    final JTextArea text = new JTextArea();
    JComboBox combo = new JComboBox();
    combo.addItemListener(new ItemListener() {
        @Override
        public void itemStateChanged(ItemEvent e) {
            if (e.getStateChange() == ItemEvent.SELECTED) {
                // assume single selection
                int i = (Integer)e.getItemSelectable().getSelectedObjects()[0];
                text.setText("Selected [" + i + "]");
            }
        }
    });

答案 1 :(得分:1)

如果您在组合框中存储的内容是Integer,那么这是可以接受的。否则就不是。

您将使用getSelectedItem()获取您在所选位置添加的对象。如果您想要组合框中该项目的索引,请使用getSelectedIndex()(返回一个int)。

(注意:如果你不知道放在那里的物品类别,就很难猜出你真正想要的东西。)