特定細胞我正在尋找這個問題的解決方案: 我有一個Excel文件,它包含的數據。一些細胞有黃色背景。我已經創建了一個將文本導入到JTable的代碼,這很好。但我想要將背景單元格顏色也導入到特定的單元格中。在這個例子中的簡單-起見,我沒有使用循環,閱讀從源代碼等Excel數據讀取我明白我需要CustomCellRenderer論壇結束後。顏色只有在JTable中
我遇到了這種方法的問題,因爲此代碼首先正確地對列中的單元格進行了顏色,但是當我開始滾動此表中的彩色單元格時,它會將整列重新着色爲黃色。 (見截圖)
我想我可以添加else語句具體顏色剩餘的細胞爲白色,但這種方法不會爲我工作,因爲我將覆蓋我的前一小區的結果。
你能指出我在這一個解決方案嗎? (這是一個錯誤,或JTable的預期行爲?)。我使用NetBeans和GUI拖n個墨滴發生器
import java.awt.Color;
import java.awt.Component;
import javax.swing.JTable;
import javax.swing.table.DefaultTableCellRenderer;
public class MyRenderer extends DefaultTableCellRenderer {
@Override
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
Component c = super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
int[][] coordinatesYellow = new int[3][2];
//[row][column] these cells are yellow
coordinatesYellow[0][0] = 3;
coordinatesYellow[0][1] = 2;
coordinatesYellow[1][0] = 4;
coordinatesYellow[1][1] = 2;
coordinatesYellow[2][0] = 2;
coordinatesYellow[2][1] = 2;
for (int i = 0; i < 3; i++) {
if ((row == coordinatesYellow[i][0]) && (column == coordinatesYellow[i][1])) {
c.setBackground(Color.yellow);
}
}
return c;
}
}
// And this is the statement I use for calling the renderer:
// resultsTable.getColumnModel().getColumn(0).setCellRenderer(new MyRenderer());
@TT - 您的評論基本上是一個完整的答案。 – tucuxi
@tucuxi沒錯,它聽起來那麼微不足道我張貼註釋。我已經做出了答案。 –
另請參閱http://stackoverflow.com/questions/22606227/colored-table-cells(甚至可能是重複的...) – Marco13