【问题标题】:How to use HTML in JTable custom renderer如何在 JTable 自定义渲染器中使用 HTML
【发布时间】:2019-01-31 19:50:51
【问题描述】:

在我的 JTable 单元格中使用 HTML 时,它将显示为

  <html><b>Example</html></b>

而不是正确的 html 样式。我读到默认渲染器使用 html 文本。如何更改我的自定义渲染器以正确显示 HTML?

我的 Jtable:

tab_months = new JTable(tabmod_months) {        
    @Override public Component prepareRenderer(TableCellRenderer renderer,
            int row,
            int col){
        Component c = super.prepareRenderer(renderer, row, col);
        int selCol = tab_months.getSelectedColumn();
        int selRow = tab_months.getSelectedRow();
        if ( selCol != -1 && selRow != -1 ){
            if (row == selRow){
                c.setBackground(new Color(163,198,255));
            } else {
                c.setBackground(new Color(255,240,245));    
            }               
        }

        if (row>=0 && row<listOpenmonths.size()+1) {
            setToolTipText(listOpenmonths.get(row).getmonthsString());
        }   

        return c;
    }
};

【问题讨论】:

  • HTML 在 Swing 中只有基本的支持(好吧,像 、spans、div 和表格这样的标签都支持,但没有 css 功能)。所以你不能使用大部分的风格特征。但是,当您扩展 JPanel 并实现 TableCellRenderer 接口时,您可以编写自己的渲染器。在这种情况下,您可以使用 Swing 布局可能性来设置数据样式。
  • How do i change my custom renderer to display HTML correctly ? - 你什么都不做。 JTable 的默认渲染器是 JLabel。 JLabel 知道如何显示基本的 HTML。使用粗体标签对我来说很好。发布您的minimal reproducible example 来证明问题。因此,首先使用标准 JTable 创建一个 JFrame,然后将您的 HTML 字符串添加到 TableModel。让它工作。然后尝试使用您的自定义代码自定义类。如果它停止工作,您知道您更改了什么以及问题出在哪里。然后,您可以在问题中包含更多信息。
  • @SergiyMedvynskyy "but no css features" Swing HTML 渲染引擎只支持有限数量的 CSS,但它确实支持 一些。 i>

标签: java html swing jtable renderer


【解决方案1】:

发现问题:我的 html 标记在字符串内部,无法识别...更改了字符串格式,它起作用了。谢谢!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-30
    • 2012-08-05
    相关资源
    最近更新 更多