我想呈現我的jtable的特定行(它應該有不同的背景顏色,它應該有粗體字符)。自定義TableCellRenderer不工作(錶行渲染)
我發現關於如何實現自定義TableCellRenderer
(here和here)和教程How to Use Tables而這一次(Table Row Rendering)的幾個問題。我使用JInternalFrame
來顯示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);
}
正如你所看到的,型號是我實施AbstractTableModel
的。
當然,我失去了一些東西。我試着打電話repaint()
看看是否發生了什麼,但沒有發生。
我也嘗試在我的JInternalFrame中放入一個JPane,並將它們添加到它的JScrollPane中,但是也沒有發生任何事。
任何幫助?
TIA,
鮑勃
您發佈的代碼看起來很好。但是,我們不知道如何實際使用此代碼的上下文。所以你的第一份工作是使用DefaultTableModel創建一個SSCCE(http://sscce.org),看看你是否可以使代碼工作。如果不是,你會發布整個15行SSCCE程序,以便我們可以確切地看到你在做什麼。一旦這個工作,你嘗試使用你的自定義TableModel。 – camickr 2010-10-10 15:55:39