0

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

jList1.getSelectedValue();

上面的代码返回一个Object,而不是一个String。我需要一个String选定的列表项。Adding/removing列表框中的模型不是问题。列表的内容不断变化(随着模型),因此.getSelectedIndex()不希望将其用作解决方法。

帮助?

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

4

4 回答 4

2

只需使用演员表,或安德鲁在评论中提到的 toString 方法:

String val = (String)jList1.getSelectedValue();

或者:

String val = jList1.getSelectedValue().toString();
于 2013-01-13T09:19:02.180 回答
1

getSelectedValue()JList中的方法返回您添加的选定对象ListModel。它可以是字符串、整数或任何其他对象。

如果您生成这样的 JList

String[] data = {"one", "two", "three", "four"};
JList myJList = new JList(data);

select 方法myJList.getSelectedValue();显然返回一个字符串。

如果您添加自己的对象,例如Studentor Department,则在选择时会得到相同的对象,并且当您尝试打印它时,将打印对象的 hashCode 引用,除非您toString()在自己的类中覆盖方法。

于 2013-01-13T09:59:43.703 回答
0

您可以将返回的对象转换为字符串,因为您已经用字符串值填充了列表。或者,您可以通过 ListModel 处理列表,但可以使用 DefaultListModel(也将数据作为对象处理)或实现您自己的 ListModel 以提供您需要的任何功能,例如将列表数据类型限制为 String。

于 2013-01-13T10:26:16.567 回答
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 中。

于 2015-12-11T18:58:38.597 回答