Java:将JTable中的HTML代码显示为纯文本

时间:2018-01-25 10:22:04

标签: java html swing

只要我有一些类似<html><i>something <b>bold</b></i></html>的字符串,并且我在JTable的标准单元格中显示它就会被解释并显示为“ 粗体

是否有一些简单的解决方案/将HTML代码显示为纯文本的最佳做法是什么?所以我在JTable单元格中看到原始的<html><i>something<b>bold</b></i></html>

不能那么难,但我不知道如何解决JTable中的自动化问题。感谢。

ps:这不是真正重复,因为它不是要求JLabel,但是对于JTable,来自How to disable the automatic HTML support of JLabel?的解决方案会禁用所有列中的HTML,接受的答案就是我要求的,答案是建议重复没有。

1 个答案:

答案 0 :(得分:3)

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);
    }

}