我正在尝试渲染我的 jtable 的特定行(它应该有不同的背景颜色,并且应该有粗体字符)。
我发现了几个关于如何实现自定义的问题TableCellRenderer
(这里和这里)以及教程如何使用表格和这个(表格行渲染)。
我正在使用 aJInternalFrame
来显示JTable
. 我试图实现这两种解决方案,但都getCellRenderer
没有prepareRenderer
被调用。调试时,我可以看到我的新 jtable 正在创建,但是方法中的断点没有被调用。
我的代码如下所示:
this.add(createData(model));
private JComponent createData(ProfitLossTableModel model) {
JTable table = new JTable(model) {
public TableCellRenderer getCellRenderer(int row, int column) {
if ((row == 0) && (column == 0)) {
DefaultTableCellRenderer renderer = new DefaultTableCellRenderer();
renderer.setHorizontalAlignment(JLabel.RIGHT);
renderer.setBackground(Color.red);
return renderer;
} else {
return super.getCellRenderer(row, column);
}
}
};
table.setPreferredScrollableViewportSize(table.getPreferredSize());
table.changeSelection(0, 0, false, false);
table.setAutoCreateRowSorter(true);
return new JScrollPane(table);
}
如您所见,模型是我对 a 的实现AbstractTableModel
。
当然,我错过了一些东西。我试着打电话repaint()
看看是否发生了什么事,但什么也没发生。
我还尝试在我的 JInternalFrame 中放置一个 JPane,然后他们将 JScrollPane 添加到其中,但也没有发生任何事情。
有什么帮助吗?
TIA,
鲍勃