Вы звоните getSelectedValue()
, прежде чем когда-либо устанавливать выбранное значение или даже заполнять список любыми значениями (по крайней мере, насколько показывает ваш опубликованный код).
Я предполагаю, что значения в массиве strings
- это значения, которыми вы хотите заполнить свой список. Инициализируйте strings
перед тем, как инициализировать список, который затем инициализируйте следующим образом: jList1 = new JList(strings);
.
Затем вы инициализируете строку selectedQual
до того, как будет выбрано значение. Есть несколько возможных решений для этого, в зависимости от того, что вам нужно. Если вы хотите, чтобы в списке было выбранное по умолчанию значение (читай: «уже заполнено при инициализации диалога»), вызовите jList1.setSelectedValue("the value you want selected")
или jList1.setSelectedIndex("the index of the value you want selected")
. Если вы хотите, чтобы он был пустым, просто оставьте его как есть.
Теперь в любом случае вы хотите, чтобы getSelectedValue()
вызывался только после того, как форма заполнена и пользователь выполняет какое-то действие (я предполагаю,какая-то кнопка «Подтвердить»). Итак, какое бы действие ни выполнялось, которое закрывает форму и обрабатывает значения, именно здесь вы вызываете getSelectedValue()
, потому что в этот момент оно должно быть установлено.
Если вы выберете пустое поле при инициализации, возможно, имеет смысл включить здесь какую-то проверку нуля, например java if(getSelectedValue() != null) {String selectedQual = jList1.getSelectedValue();} else {System.out.println("Error: No Tip percentage has been selected!");}
Обратите внимание, что вы, вероятно, хотите проверить свои значения иначе, чем просто System Outprinting некоторой строки, но это не такчасть этого вопроса.
Надеюсь, это решит ваши проблемы!