0

JEdi​​torPane を拡張する ListCellRenderer にこのコードがあります。エディタ ペインには画像が表示されず、代わりに「壊れたアイコン」が表示されます。どうしたの?

public class TweetCellRenderer extends JEditorPane implements ListCellRenderer {

    public Component getListCellRendererComponent(
        javax.swing.JList list,
        Object value,
        int index,
        boolean isSelected,
        boolean cellHasFocus
    ) {

        setBorder(BorderFactory.createEmptyBorder(3, 3, 3, 6));

        StringBuffer sb = new StringBuffer();

        setContentType("text/html");

        sb.append("<html><body>");
        sb.append("<img src='http://www.google.co.uk/images/firefox/video.png' />");

        sb.append("</body></html>");

        System.out.println(sb);

        setText(sb.toString());  

        setBackground(isSelected ? SELECTED_BG : BG);        
        setForeground(isSelected ? SELECTED_FG : FG);

        return this;
    }
}
4

2 に答える 2

0

セルがレンダリングされるたびに、HTML が再度解析されます。レンダラーで HTML を使用すると、パフォーマンスが低下することがよくありますが、驚くことではありません。HTML が解析されたばかりであれば、画像の増分読み込みを開始する時間がなかったと思います。通常、HTML がコンポーネントに追加され、再描画イベントが発生するまで遅延が発生します。これにより、別のスレッドで画像をロードして処理を実行できます。

おそらく、各セルに関連付けられたコンポーネントを返すことでうまくいくでしょう。

于 2009-10-20T23:59:17.660 に答える
0

URL から ImageIcon を作成し、アイコンをリスト モデルに追加します。JList にはアイコン用のデフォルトのレンダラーがあると思います。

于 2009-10-21T00:57:03.877 に答える