Java jList1.getSelectedValue()返回一个Object。我需要一个选定列表项的字符串。

时间:2013-01-13 09:09:57

标签: java string swing object jlist

我是第二年的Java学生,我在自己的时间学习各种各样的东西。其中之一是JList

jList1.getSelectedValue();

上面的代码返回Object,而不是String。我需要String所选列表项。列表框中的Adding/removing个模型不是问题。列表的内容不断变化(使用模型),因此使用.getSelectedIndex()作为解决方法是不可取的。

帮助?

编辑:我确实有一位听众为jList工作,我只需要解决这个问题。

4 个答案:

答案 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();显然会返回一个字符串。

如果添加自己的对象,如StudentDepartment,则在选择时会获得相同的对象,当您尝试打印时,除非您覆盖{{{}},否则将打印对象的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中。