【发布时间】: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