アプリ版:「スタンプのみでお礼する」機能のリリースについて

こんにちは。
今、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();

といった感じですか?

A 回答 (3件)

>というエラーが出たのですが、もう少し詳しく教えていただけないですか?


インターフェースをimplementsした場合は、インターフェースに定義されている全てのメソッドを実装しなければなりません。

javax.swing.ListModelは
addListDateListener(ListDataListener)
getElementAt(int)
getSize()
removeListDataListener(ListDataListener)
の4つのメソッドが定義されているので、これらを全て実装してください。
    • good
    • 0

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);

この回答への補足

JListLinked は abstract でなく、javax.swing.ListModel 内の abstract メソッド removeListDataListener(javax.swing.event.ListDataListener) をオーバーライドしません。
class JListLinked extends java.util.LinkedList implements javax.swing.ListModel{

というエラーが出たのですが、
もう少し詳しく教えていただけないですか?

補足日時:2005/11/29 21:49
    • good
    • 0

JList(javax.swing.JList)クラスとList(java.util.List)インターフェースはまったく関係ない型です。


従って、Listの実装クラスであるLinkedList(java.util.LinkedList)クラスもJListクラスとは関係なく、
 Jist list
 list = LinkedList();
は出来ません。
LinkedListの内容を一つずつJListに登録・追加・削除する必要があります。
    • good
    • 0
この回答へのお礼

ありがとうございます。
ひとつずつ登録、追加、削除ですか・・

ふぬぬ また新しい次元のことですね。

お礼日時:2005/11/26 04:08

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!