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