は私が行いますJListのカスタムレンダラとHTML
public class HtmlCellRenderer extends DefaultListCellRenderer{
/**
*
*/
private static final long serialVersionUID = 1L;
/**
*
*/
public static final int CONST_PREFERED_HEIGHT = 200;
/**
*
*/
public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean hasFocus) {
JLabel label = (JLabel) super.getListCellRendererComponent(list, value, index, isSelected, hasFocus);
label.setPreferredSize(new Dimension(50, CONST_PREFERED_HEIGHT));
if (value != null) {
ExtendedJEditorPane htmlPane = new ExtendedJEditorPane();
label.setLayout(new BorderLayout());
htmlPane.setEditable(false);
htmlPane.setContentType("text/html");
htmlPane.setText(value.toString());
label.add(htmlPane, BorderLayout.CENTER);
}
return label;
}
}
カスタムレンダラのために。ここで私は新しいJEditPaneを作成します(私は自分のhtmlにカスタムタグを描画するためにそれを拡張します)、セルのラベルに挿入しますが、その結果、セルはhtmlを認識せず、代わりにrawテキストを出力します。
入力テキストは次のとおりです。
"<table><tr><td rowspan=\"2\"><img src=\"data:image/jpeg;base64,"+myImageData+\" align=\"left\" /></td><td><h3>Test1 </h3><hr></td></tr><tr><td><p>Test</td></tr></table>"
リストエントリオブジェクトはのtoStringを実行する場合には、この文字列を返します。
* "あなたが任意のアイデアを持っていますか?" *よりよいヘルプについてはすぐに、[SSCCE](HTTP POSTを:// sscceを.org /)。スタイル指定された 'JComponent'でHTMLを使用する場合、コンポーネントのサイズを設定するのと同じくらい意味があります(見た目に応じてナンセンスになります)。 –
' label.setPreferredSize(new Dimension(50、CONST_PREFERED_HEIGHT)); HTML内のスタイル内。さらに、幅や高さのいずれかを設定し、コンテンツの必要に応じてもう一方を調整することもできます。 –
関連しない:a)getXXRendererComponentでコンポーネントを作成せず、コンストラクタで作成して再利用するb)JLabelをコンテナとして誤って使用しないで、コンポーネントを直接または汎用コンテナ(JPanel)コンポーネントを含むc)サイジングのヒントをハードコーディングしないでください – kleopatra