java - 从Java中的组合框获取int值

标签 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);
}

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

最佳答案

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

int s_n = (Integer) jComboBoxSN.getSelectedItem();

如果在空项上执行,将导致 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 + "]");
            }
        }
    });

关于java - 从Java中的组合框获取int值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8614080/

相关文章:

c++ - 如何在 Win32 中创建带位图的组合框?

JavaFX 组合框未显示对象的正确值

java - OpenGL 2.0 ES 矩阵堆栈如何工作?

java - 单击 JTable 中的一行时出现 NullPointerException

java - 自动调整 JTabbedPane 大小

java - 我需要一个 JTextArea,它在行的末尾计算该行中的字符数

c# - 使用组合框作为搜索条件

java - java中的数组结构

java - 保持类独立性或避免类型检查

java - 为什么 Java repaint() 方法不起作用?