我想创建一个JListh,它会在我们的单元格中显示我的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并打印原始文本。
输入文字为:
"<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,列表条目对象将返回此字符串。
答案 0 :(得分:3)
而不是:
return label;
尝试使用:
return htmlPane;