0

私は Java の 2 年生で、自分の時間にさまざまなことを学んでいます。これらの 1 つですJList

jList1.getSelectedValue();

上記のコードはObjectではなく を返しますStringString選択したリスト項目の が必要です。Adding/removingリストボックスからのモデルは問題ありません。リストの内容は (モデルによって) 常に変化するため、.getSelectedIndex()回避策として使用することは望ましくありません。

ヘルプ?

編集:私は のために働いているリスナーを持っていますjList、私はこの1つの問題を解決する必要があります.

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();は明らかに文字列を返します。

Studentまたはのような独自のオブジェクトを追加するDepartmentと、選択時に同じオブジェクトが取得され、それを出力しようとするとtoString()、独自のクラスのメソッドを上書きしない限り、オブジェクトのhashCode参照が出力されます。

于 2013-01-13T09:59:43.703 に答える
0

すでにリストに文字列値を入力している場合は、返されたオブジェクトを文字列にキャストできます。または、ListModel を介してリストを処理することもできますが、DefaultListModel (データをオブジェクトとしても処理します) を使用するか、独自の ListModel を実装して、リストのデータ型を文字列に制限するなど、必要な機能を提供します。

于 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 に答える