我是第二年的Java学生,我在自己的时间学习各种各样的东西。其中之一是JList
。
jList1.getSelectedValue();
上面的代码返回Object
,而不是String
。我需要String
所选列表项。列表框中的Adding/removing
个模型不是问题。列表的内容不断变化(使用模型),因此使用.getSelectedIndex()
作为解决方法是不可取的。
帮助?
编辑:我确实有一位听众为jList
工作,我只需要解决这个问题。
答案 0 :(得分:2)
只需使用强制转换器中提到的强制转换或toString方法:
String val = (String)jList1.getSelectedValue();
或:
String val = jList1.getSelectedValue().toString();
答案 1 :(得分:1)
来自班级JList的方法getSelectedValue()
会返回您在ListModel
中添加的所选对象。它可以是String,Integer或任何其他Object。
如果你生成像这样的JList
String[] data = {"one", "two", "three", "four"};
JList myJList = new JList(data);
select方法myJList.getSelectedValue();
显然会返回一个字符串。
如果添加自己的对象,如Student
或Department
,则在选择时会获得相同的对象,当您尝试打印时,除非您覆盖{{{}},否则将打印对象的hashCode引用1}}你自己班级的方法。
答案 2 :(得分:0)
如果已经使用String值填充了列表,则可以将返回的Object强制转换为String。或者,您可以通过ListModel处理列表,但是使用DefaultListModel(也将数据作为对象处理)或实现您自己的ListModel来提供您需要的功能,例如将列表数据类型限制为String。
答案 3 :(得分:0)
我使用.toString()
或强制转换为字符串,但我收到了选择的地址,而不是值。所以我尝试了这段代码,它确实有效:
private class ButtonListener implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
String a[] = new String[20];// To save the selections
int i = 0, j = 0;
// Get the selected values.
Object[] selections = array2List.getSelectedValues();
// To save the selections in array
for(Object selections : sugCoursesList.getSelectedValues())
{
for(String t : array2)
{
if (selections == t)
{
a[i] = t;
i++;
System.out.println(selections);
}
}
}
for(String s: a)
System.out.println("a " + s);
}
我已经比较了列表中的数组,以检查它是否被选中,如果是,将它保存在数组a中。