天天看點

java jtable 顔色_Java JTable更改單元格顔色

小編典典

假設您要用其他顔色渲染的單元格代表一種狀态(我将以“拒絕并準許”為例)。然後,我将在我的表模型中實作一個名為getStatus(int

row)的方法,該方法傳回任何給定行的狀态。

然後,到位後,我将建立一個負責渲染單元格所屬列的單元格渲染器。單元格渲染器将在以下代碼行中顯示。

public class StatusColumnCellRenderer extends DefaultTableCellRenderer {

@Override

public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int col) {

//Cells are by default rendered as a JLabel.

JLabel l = (JLabel) super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, col);

//Get the status for the current row.

CustomTableModel tableModel = (CustomTableModel) table.getModel();

if (tableModel.getStatus(row) == CustomTableModel.APPROVED) {

l.setBackground(Color.GREEN);

} else {

l.setBackground(Color.RED);

}

//Return the JLabel which renders the cell.

return l;

}

然後,當渲染器就位時,隻需使用以下代碼将渲染器“應用于”表:

Table.getColumnModel().getColumn(columnIndex).setCellRenderer(new StatusColumnCellRenderer());

關于使單元格可編輯,隻需在表模型中實作isCellEditable(int

rowIndex,int

columnIndex)方法即可。如果您想保留使用者提供的值(我想您一定會這樣做),則還需要實作setValueAt方法

(對象值,int rowIndex,int columnIndex)。

2020-09-16