Tenho um problema chato... estou fazendo comparações linha a linha, mas só a última é pintada, eu faço:
colorButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent e) {
for(int i =0;i<minhaJTable.getRowCount();i++){
atualizarCores(i);
}
E o atualizar cores:
public void atualizarCores(int i){
´´´
BigDecimal minimo= new BigDecimal(model.getValueAt(i,6).toString());
BigDecimal maximo= new BigDecimal(model.getValueAt(i,7).toString());
if(minimo.compareTo(media)<0){
TableCellRenderer tcr = new ColorirVermelho(i);
TableColumn column = table.getColumnModel().getColumn(6);
column.setCellRenderer(tcr);
}else if(minimo.compareTo(media)>0){
TableCellRenderer tcr = new ColorirAzul(i);
TableColumn column = table.getColumnModel().getColumn(6);
column.setCellRenderer(tcr);
}
if(maximo.compareTo(media)>0){
TableCellRenderer tcr = new ColorirAzul(i);
TableColumn column = table.getColumnModel().getColumn(7);
column.setCellRenderer(tcr);
}else if(maximo.compareTo(media)<0){
TableCellRenderer tcr = new ColorirVermelho(i);
TableColumn column = table.getColumnModel().getColumn(7);
column.setCellRenderer(tcr);
}
table.updateUI();
}
A classe que pinta:
class ColorirAzul extends DefaultTableCellRenderer{
private static final long serialVersionUID = -4187163147076513197L;
int selectedRow=-1;
public ColorirAzul(int row){
super();
this.selectedRow=row;
}
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected,boolean hasFocus, int row, int column){
Component cell = super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
if(selectedRow!=-1){
if(selectedRow==row){
((JLabel) cell).setHorizontalAlignment(SwingConstants.CENTER);
cell.setFont(new Font("Serif", Font.BOLD, 12));
cell.setForeground(Color.BLUE);
((JLabel) cell).setText(value.toString());
}else{
cell.setForeground(Color.BLACK);
}
}
return this;
}
}
Mostrei uma parte do código, ele funciona individualmente.Mas se tiverem 10 linhas, só as células da última linha é pintada, se tiver 3, só a última, sempre a última fica pintada.Quero comparar e deixar pintadas as células de todas as linhas.. alguma idéia???