获取JList中的文本元素到变量?

时间:2012-01-18 09:37:57

标签: java swing jlist

尽管进行了大量研究,但我无法找到答案或解决如何将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 个答案:

答案 0 :(得分:7)

ListModel#getElementAt(int)方法与当前选定的索引一起使用。如果您确定您的模型仅包含String个实例,则可以直接将其转换为String

答案 1 :(得分:2)

您无法获取所选文字,因为您在删除所选元素后尝试获取该文本。 你可以改变你的代码:

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
}

然后它有效。

答案 2 :(得分:-2)

检索所选索引的项目很容易。 这是一个简单的代码片段:

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

现在使用以下代码将所选项目作为字符串:

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