あれこれ備忘録@はてなブログ

勉強したことやニュースや出来事を備忘録として書いていきます

このブログには広告が含まれます

JListに画像を表示する

twitter4jを使ったjavaアプリケーションでタイムラインを取得してそれをJListに表示させようとしたけれど、文字列を表示するだけならすぐにできたのですが、画像を表示させようとすると結構面倒ですね。

JList.addElement(Object object) となっているのでここに文字列ではなく、JLabelやJPanelを渡せばすぐに表示できるのかと思っていたのですが、そうではなかったようで…

JListの各リスト項目を表示するルールを決めているレンダラーを定義しなおさないといけないらしい。

そのままLabelなどを渡しても、Labelの各情報を表す文字列を表示されるのはレンダラーでObject.toString()としてそれを表示するようにしているからなのでしょう。

ということで、またサンプルコード探し。

Swing再入門 レンダラーとモデル(CodeZine)

JList (Java Platform SE 6) レンダラーでJListの表示をカスタマイズ! - [Javaプログラミング](All About)

class SomeThing extends JLabel implements ListCellRenderer というふうにListCellRendererインターフェースを実装するクラスを作るということなのですが、JLabelやJPanelを継承する必要はあるのでしょうか?

確かにJava公式のリファレンスJavaDocでそのようにしているわけですから間違いはないと思いますが。

理由は上のようなクラスの中でオーバライドするメソッド public Component getListCellRendererComponent( JList list, // the list Object value, // value to display int index, // cell index boolean isSelected, // is the cell selected boolean cellHasFocus) // does the cell have focus の中でJLabelやJPanelを定義して、これを返り値のComponentとして返せば良いような気がするからなんです。

何か不都合でもあるんでしょうか。

Swingのいい本はないでしょうかね?

今すぐ使えるかんたんTwitterツイッター入門 今話題のTwitterをもっと楽しく! Twitterの「いまさら聞けない」疑問点を一から徹底解説。Twitterの基本的な使い方から楽しみ方までバッチリ紹介。

Twitter就活 「内定なう」の時代がやってきた! Twitterは就活の最強ツールだ! Twitterを使った企業研究、OB・OG訪問、自己PR、エントリーシート対策、面接対策などのやり方を伝授する。また、企業・採用担当者のTwitter活用法も紹介。

Java Swing Hacks 今日から使える驚きのGUIプログラミング集 原タイトル:Swing hacks Joshua Marinacci/著 Chris Adamson/著 神戸博之/監訳 島田秋雄/監訳 加藤慶彦/訳 グラフィックJava2〈Vol.2〉Swing編(下) (サンソフトプレスシリーズ) Java GUIプログラミング さらにパワーアップしたSwing(3)

とりあえず、こんな感じで出来ました。

twitter4j java ツイッター