Странный случай: JcomboBox.getSelectedItem () возвращает объект, не подлежащий преобразованию в String - PullRequest
0 голосов
/ 20 февраля 2019

comboBox - это мой массив String, который я использовал для заполнения своего JComboBox

JComboBox chooser = new JComboBox(comboBox);

Почему, когда я вызываю эту вторую команду, она возвращает мне метод toString класса Object (в частности: "[Ljava.lang.Object;@28f4b2ca ") а не строка?

courrentKey = String.valueOf(chooser.getSelectedObjects());

Ответы [ 2 ]

0 голосов
/ 20 февраля 2019

Некоторая дополнительная информация.Возможно, заблуждение заключается в том, что JComboBox работает только со значениями String.

Вы можете инициализировать JComboBox с массивом String

String[] items = new String[] { "LOL", "YOLO" };
JComboBox combo = new JComboBox(items);

Но после этого все еще допустимо использовать JComboBox.addItem (item) метод для добавления объекта.
Где item - любой объект -> String, Integer, Double, Float, ...
Так что это разрешено:

Integer extraItem = 69;
combo.addItem(extraItem);

Это действительно, если вы не параметризовали тип при инициализации, а после этого вы можете добавлять только объекты String.

JComboBox<String> combo = new JComboBox<String>(items);

Из-за этого поведения метод JComboBox.getSelectedObjects () возвращает массив объектов -> Object []

Чтобы получить выбранный элемент, вы можете сделать следующее

Object selectedItem = combo.getSelectedItem();

или

Object selectedItem = combo.getSelectedObjects()[0];

А затем используйте возвращаемое значение

if (selectedItem == null) {
    return null;
} else {
    return selectedItem.toString().trim();
}
0 голосов
/ 20 февраля 2019

getSelectedObjects() возвращает Object[], вы видите toString() этого массива Object с.

Вы, вероятно, хотели использовать courrentKey = chooser.getSelectedItem()

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