我正在努力将数据库中的列中的 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/