我試圖能夠在JTable中對單元格進行顏色分離,但我只能在整列上應用TableCellRenderer,這顯然會導致功能故障。我有一個自定義的JTable:在單個單元格上應用TableCellRenderer
public class JColorTable extends JTable{
(...)
public void setCellColor(int col, int row, Color newColor) {
getColumnModel().getColumn(col).setCellRenderer(new ColorField(col, row, newColor, background));
repaint();
}
}
ColorField看起來是這樣的:
class ColorField extends DefaultTableCellRenderer {
(...))
@Override
public Component getTableCellRendererComponent(JTable table, Object value,
boolean isSelected, boolean hasFocus, int row, int column) {
JLabel l = (JLabel) super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
if (row == newRow && column == newCol) {
l.setBackground(Color.red);
} else {
l.setBackground(defaultColor);
}
return l;
}
}
這就像一個魅力時,我有一列的單一有色格,但是當我嘗試到彩色另一個單元格該列,前一個被刪除(由於ColorField中的條件不適用於前一列)。
有沒有辦法只將ColorField應用於單個單元而不是整列?如果是這樣,怎麼樣?恐怕我沒有找到合適的東西。
的getCustomRenderer方法應該是類型的TableCellRenderer而不是空隙。 – 2013-09-30 22:46:17
@JorgeBlancoSegura謝謝。修復。也許StackOverflow需要一個內置的Java IDE來確保我輸入的代碼很好。 :) – 2013-09-30 23:00:11
請參閱此[清潔實施](http://stackoverflow.com/a/16408257/418556)。 – 2014-05-19 19:59:43