[英]Java: Displaying HTML code in a JTable as plain text
As soon as I have some string like <html><i>something <b>bold</b></i></html>
and I display that in a standard cell of a JTable it get's interpreted and shown as " something bold ". 一旦我有一些字符串,如
<html><i>something <b>bold</b></i></html>
,我在JTable的标准单元格中显示它,它被解释并显示为“ 某事大胆 “。
Is there some simple solution / what is best practice to show the HTML code as plain text? 是否有一些简单的解决方案/将HTML代码显示为纯文本的最佳做法是什么? So I see in the JTable cell the original
<html><i>something<b>bold</b></i></html>
? 所以我在JTable单元格中看到原来的
<html><i>something<b>bold</b></i></html>
?
Can't be that difficult, but I don't see how to work around the automatism in JTable. 不能那么难,但我不知道如何解决JTable中的自动化问题。 Thanks.
谢谢。
ps: this was no real duplicate as it wasn't asking for JLabel but for JTable, the solution from How to disable the automatic HTML support of JLabel? ps:这不是真正重复,因为它不是要求JLabel而是要求JTable, 如何禁用JLabel的自动HTML支持的解决方案? would disable HTML in all columns, the accepted answer does what I asked for, the answer in the suggested duplicate does not.
将禁用所有列中的HTML,接受的答案按照我的要求进行,建议的副本中的答案不会。
import java.awt.BorderLayout;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableCellRenderer;
public class TestFrame extends JFrame {
public TestFrame() {
super("Sample Project");
setSize(500, 200);
setDefaultCloseOperation(EXIT_ON_CLOSE);
}
public static class RawHtmlRenderer extends DefaultTableCellRenderer {
public RawHtmlRenderer() {
putClientProperty("html.disable", Boolean.TRUE);
}
}
public static void main(String[] str) {
Object[][] rowData = new Object[][] {
{ "test", "<html><i>something<b>bold</b></i></html>" },
{ "test", "test" }, { "test", "123" } };
String[] header = new String[] { "Column 1", "Column 2" };
JTable table = new JTable(rowData, header);
TestFrame frame = new TestFrame();
table.getColumnModel().getColumn(1).setCellRenderer( new RawHtmlRenderer() );
frame.getContentPane().add(new JScrollPane(table), BorderLayout.CENTER);
frame.setVisible(true);
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.