我有一個JTable,我想使用自定義背景顏色突出顯示某些行。這我已經做了以下類:在具有自定義行背景顏色的JTable中使用intercellSpacing會導致意外的結果
public class MyTable extends JTable {
private List<RefData> data = null;
public List<RefData> getData() {
return data;
}
public void setData(List<RefData> data) {
this.data = data;
}
@Override
public Component prepareRenderer(TableCellRenderer renderer, int row, int column) {
Component comp = super.prepareRenderer(renderer, row, column);
if (this.data == null || row < 0 || row > this.data.size()-1){
return comp;
}
RefData rowData = this.data.get(row);
if (rowData.getStatus() < 3000){
comp.setBackground(Color.YELLOW);
} else {
comp.setBackground(Color.WHITE);
}
return comp;
}
}
所有這一切都像一個魅力,我得到我想要的。接下來,在查看生成的GUI時,我意識到表格看起來過於濃縮。一切看起來都在一起。由於始終與默認的JTable設置;)
嗯,這是很容易解決心想:
myTable.setIntercellSpacing(new java.awt.Dimension(10, 1));
現在,細胞是很好的間隔但,添加單元格邊距現在在默認的表背景顏色,在我的情況下是白色的。這看起來很尷尬。
我假設單元格間距增加了單元邊框和prepareRenderer返回的組件之間的間距。這將解釋結果。但是,我怎樣才能改變細胞本身的背景?我的prepareRenderer
解決方案不適合這項任務嗎?還是有另一種解決方案?
由於沒有人在這方面進行了打分,所以我會認爲沒關係。 – exhuma 2011-02-14 12:16:41