• ベストアンサー

List,LinkedListの関係

こんにちは。 今、LinkedListでつなげたコンテンツの集合を JListのように表示をしたいと思っています。 もちろん表示しながらもLinkedListの中のそれぞれのコンテンツを変更、削除、挿入などをしてもJListに反映できるようにしたいと思っています。 あるサンプルコードでは //JListを置いたパネル class ListPanel extends JPanel implements ListSelectionListener { JList list; DefaultListModel listModel; int select = -1; //選択された項目インデックス,起動時は-1 String entry; //選択された項目内容 JLabel fileLabel; //ファイル名を表示するラベル ListPanel(){ setLayout(new BorderLayout()); listModel = new DefaultListModel(); list = new JList(listModel); list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); list.addListSelectionListener(this); fileLabel = new JLabel(filename); add(fileLabel, BorderLayout.NORTH); //ファイル名を表示するラベルをJPanelに置く add(new JScrollPane(list), BorderLayout.CENTER); //listを入れたJScrollPaneをJPanelに置く } void dataRead() throws IOException{ //ファイルを読む listModel.removeAllElements(); BufferedReader din = new BufferedReader(new FileReader(filename)); while ((entry=din.readLine()) != null) { //1行読む listModel.addElement(entry); //リスト項目に追加 } din.close(); } のように JList list; DefaultListModel listModel; を使ってやっていますが、LinkedListでも同様にできるのでしょうか? たとえば・・ Jist list list = LinkedList(); といった感じですか?

質問者が選んだベストアンサー

  • ベストアンサー
  • Bonjin
  • ベストアンサー率43% (418/971)
回答No.3

>というエラーが出たのですが、もう少し詳しく教えていただけないですか? インターフェースをimplementsした場合は、インターフェースに定義されている全てのメソッドを実装しなければなりません。 javax.swing.ListModelは addListDateListener(ListDataListener) getElementAt(int) getSize() removeListDataListener(ListDataListener) の4つのメソッドが定義されているので、これらを全て実装してください。

その他の回答 (2)

  • Bonjin
  • ベストアンサー率43% (418/971)
回答No.2

JListで表示するデータとLinkedListで保持するデータを同じにしたいならば、LinkedListにjavax.swing.ListModelインターフェースを実装させたクラスを作れば良いかと思います。 概略的には以下のような感じです。 class Foo extends java.util.LinkedList implements javax.swing.ListModel{中略} java.util.List data = new Foo(); JList list = new JList((ListModel)data);

ilovekoushien
質問者

補足

JListLinked は abstract でなく、javax.swing.ListModel 内の abstract メソッド removeListDataListener(javax.swing.event.ListDataListener) をオーバーライドしません。 class JListLinked extends java.util.LinkedList implements javax.swing.ListModel{ というエラーが出たのですが、 もう少し詳しく教えていただけないですか?

  • deadlock
  • ベストアンサー率67% (59/87)
回答No.1

JList(javax.swing.JList)クラスとList(java.util.List)インターフェースはまったく関係ない型です。 従って、Listの実装クラスであるLinkedList(java.util.LinkedList)クラスもJListクラスとは関係なく、  Jist list  list = LinkedList(); は出来ません。 LinkedListの内容を一つずつJListに登録・追加・削除する必要があります。

ilovekoushien
質問者

お礼

ありがとうございます。 ひとつずつ登録、追加、削除ですか・・ ふぬぬ また新しい次元のことですね。

関連するQ&A