Получение значения int из поля со списком в Java - PullRequest
0 голосов
/ 23 декабря 2011

Я изо всех сил пытался получить значения 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 ]

3 голосов
/ 23 декабря 2011

Если вы не уверены, что ваше поле со списком не может содержать нулевые значения (и это неясно, если вы загружаете значения из базы данных), то показанный вами код небезопасен. Эта строка:

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

приведет к исключению NullPointerException, если оно выполнено для нулевого элемента. (Автоматическая распаковка нулевой примитивной оболочки - исключение NullPointerException).

Альтернативой может быть проверка на нулевое значение перед преобразованием Integer в int:

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 голос
/ 23 декабря 2011

Если , что вы сохранили в поле со списком Integer с, то это приемлемо. В противном случае это не так.

Вы получите объект, который вы добавили в выбранной позиции с getSelectedItem(). Если вы хотите, чтобы index этого элемента в поле со списком, используйте getSelectedIndex() (который возвращает int).

(Примечание: не зная, какой класс объектов вы туда поместите, довольно сложно угадать, что вы на самом деле хотите от него.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...