Java jList1.getSelectedValue()返回一个对象。我需要所选列表项中的字符串。

Java jList1.getSelectedValue()返回一个对象。我需要所选列表项中的字符串。,java,string,swing,object,jlist,Java,String,Swing,Object,Jlist,我是Java的二年级学生,我在自己的时间里学习各种各样的东西。其中之一是JList jList1.getSelectedValue(); 上面的代码返回一个对象,而不是字符串。我需要所选列表项的字符串从列表框中添加/删除模型不是问题。列表的内容(随着模型)不断变化,因此使用.getSelectedIndex()作为解决方法是不可取的 帮忙 编辑:我确实有一个监听器在为jList工作,我只需要解决这一个问题。只需使用cast,或者Andrew在评论中提到的toString方法: String v

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

jList1.getSelectedValue();
上面的代码返回一个
对象
,而不是
字符串
。我需要所选列表项的
字符串<代码>从列表框中添加/删除
模型不是问题。列表的内容(随着模型)不断变化,因此使用
.getSelectedIndex()
作为解决方法是不可取的

帮忙


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

只需使用cast,或者Andrew在评论中提到的toString方法:

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


只需使用cast,或Andrew在评论中提到的toString方法:

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


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

如果生成这样的JList

String[] data = {"one", "two", "three", "four"};
JList myJList = new JList(data);
选择方法
myJList.getSelectedValue()显然返回一个字符串


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

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

如果生成这样的JList

String[] data = {"one", "two", "three", "four"};
JList myJList = new JList(data);
选择方法
myJList.getSelectedValue()显然返回一个字符串


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

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

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

我使用了
.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中。

我使用了
.toString()
或casting to string,但我收到的是选择的地址,而不是值。所以我尝试了这个代码,它确实起了作用:

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中。

只需使用强制转换。。。字符串val=(字符串)jList1.getSelectedValue()@Quilliom为什么不将此添加为答案,以便用户可以选择它作为所选答案?只需使用cast。。。字符串val=(字符串)jList1.getSelectedValue()@问题:为什么不将此添加为答案,以便用户可以选择它作为选择答案?如果JList包含带有字符串对象的ListModel,则无需强制转换。
jList1.getSelectedValue().toString()
将避免强制转换。如果JList包含带有字符串对象的ListModel,则无需强制转换。
jList1.getSelectedValue().toString()
将避免强制转换。getSelectedValue()方法仍然返回一个对象@Quilliom是在ListModel中添加的对象不是string。但是如果没有toString()或cast,您将无法对返回值使用任何string方法。@Quilliom
toString()
方法返回在ListModel中添加的对象的字符串表示形式,当尝试使用
字符串进行强制转换时,将出现类强制转换异常,除非您有JList。@Quilliom,但如果没有toString()或强制转换,您将无法对返回值使用任何字符串方法-当然可以。泛型不需要强制转换。getSelectedValue()方法仍然返回一个对象@Quilliom是在ListModel中添加的对象不是string。但是如果没有toString()或cast,您将无法对返回值使用任何string方法。@Quilliom
toString()
方法返回在ListModel中添加的对象的字符串表示形式,当尝试使用
字符串进行强制转换时,将出现类强制转换异常,除非您有JList。@Quilliom,但如果没有toString()或强制转换,您将无法对返回值使用任何字符串方法-当然可以。泛型不需要强制转换。