Получить текстовый элемент внутри JList в переменную? - PullRequest
6 голосов
/ 18 января 2012

Несмотря на большое количество исследований, я не могу найти ответ или решить, как получить выбранный текстовый элемент из JList в переменную. Поэтому я бы хотел помочь. Я пытался выбрать индекс выбранного элемента и удалил элементы с помощью этого кода, и это прекрасно работает, но, как я уже писал, я хочу, чтобы выбранный текст в переменной после нажатия кнопки. Спасибо!

int index = list.getSelectedIndex();
model.removeElementAt(index);

Части моего кода JList:

model = new DefaultListModel();
list = new JList(model);
list.setSelectionMode(ListSelectionModel.SINGLE_INTERVAL_SELECTION);
JScrollPane listScroller = new JScrollPane(list);
listScroller.setPreferredSize(new Dimension(430, 60));

Части моего кода actionlistener:

// Select customer
if(event.getSource() == buttonSelectCustomer){
int index = list.getSelectedIndex(); // Just for test
model.removeElementAt(index); // Just for test
int number = model.getSize(); // Just for test
//String selectedText = list.getSelectedValue(); // Not working!
}

Ответы [ 3 ]

7 голосов
/ 18 января 2012

Используйте метод ListModel#getElementAt(int) с текущим выбранным индексом.Если вы уверены, что ваша модель содержит только String экземпляров, вы также можете напрямую привести ее к String

2 голосов
/ 18 января 2012

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

if(event.getSource() == buttonSelectCustomer)
{
    int index = list.getSelectedIndex(); // Just for test
    model.removeElementAt(index); // Just for test
    int number = model.getSize(); // Just for test
    String selectedText = list.getSelectedValue(); // Not working!
}

на мой код:

if(event.getSource() == buttonSelectCustomer)
{
    String selectedText = (String)list.getSelectedValue(); // it works
    int index = list.getSelectedIndex(); // Just for test
    model.removeElementAt(index); // Just for test
    int number = model.getSize(); // Just for test
}

тогда он работает.

0 голосов
/ 30 мая 2015

Легко получить элемент выбранного индекса.Вот простой фрагмент кода:

String[] string = new String[]{"Hello","Hi","Bye"};
JList list = new JList(string);

Теперь используйте следующий код для получения выбранного элемента в виде строки:

String item = list.getSelectedIndex().toString();
...