2016-12-22 17 views
1

私は最初のリストを作成しようとしていますが、エラーが発生しました。シンボルが見つかりませんlistModel.addElement

private ListModel getListModel() { 

    String[] arrayOfStrings = new String[3]; 
    arrayOfStrings[0] = "one"; 
    arrayOfStrings[1] = "two"; 
    arrayOfStrings[2] = "three"; 

    ListModel listModel = new DefaultListModel(); 

    for (int i=0;i<arrayOfStrings.length;i++) { 
     listModel.addElement(arrayOfStrings[i]);    
    } 
}  

エラー:

error: cannot find symbol 
      listModel.addElement(arrayOfStrings[i]);    

symbol: method addElement(String) 

    location: variable listModel of type ListModel 

私はインターフェイスだけでなく、リストを使用して、まだ新しいです。ここ

は、私は、リストのモデルのために使用していますテンプレートです。リストを作成するためのサンプルコードをダウンロードし、そのコードは非常に似ていました。私は何が欠けていますか?サンプルコードがインポートしたすべてのものをインポートしました。

+0

addElement()はDefaultListModelのメソッドで、ListModelインターフェイスには存在しません。したがって、それを使用できるようにするには、変数をListModelではなくDefaultListModel型で宣言する必要があります。また、生の型を使用しないでください:http://stackoverflow.com/questions/2770321/what-is-a-raw-type-and-why-shouldnt-we-use-it。 DefaultListModel を使用してください。 –

答えて

6

不明な点がある場合は、すべて表示されるようにAPIにアクセスしてください。この状況では、ListModel<E>のインターフェイスにaddElement(...)メソッドがないことを示すAPIが表示されます。変数をDefaultListModel<E>型として宣言する必要があります。これは、このメソッドが実装されているためです。

参考文献:

これを言って、あなたの方法はまだ例えば... ListModelのインターフェイスの型を返すことができ、

// method declared to return the interface, ListModel 
private ListModel<String> getListModel() { 
    String[] arrayOfStrings = {"one", "two", "three"}; 

    // make sure to use generic types 
    DefaultListModel<String> listModel = new DefaultListModel<>(); 
    for (String txt : arrayOfStrings) { 
     listModel.addElement(txt); 
    } 
    return listModel; // don't forget to return a result 
} 
+0

ありがとう、私はより慎重にコードを読んでいる必要があります! –

5

機能addElement(...)はで宣言されていますであるが、ListModelには含まれていないため、DefaultListModelとして宣言されたオブジェクトに対してのみ呼び出すことができます。

DefaultListModel listModel = new DefaultListModel();を使用してコードを修正してください。

関連する問題