Quero comparar duas células de uma jTable e pintá-las conforme uma ser maior/menor do que um dado valor digitado pelo usuário.Tá funcionando parcialmente, mas porque está pintando TODA a coluna não apenas as células que foram editadas!Peguei um código daqui mesmo e modifiquei para comparação:
int selecionado=table.getSelectedRow();//pega a linha slecionada
if(n.getLimite().equals("MÍN.")){ //if que compara o limite mínimo de um valor ÚNICO
media=n.getValor_normalizado();
for(int i =0;i<table.getRowCount();i++){
if(selecionado==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();
TableColumn column = table.getColumnModel().getColumn(6);
column.setCellRenderer(tcr);
}else if(minimo.compareTo(media)>0){
TableCellRenderer tcr = new ColorirAzul();
TableColumn column = table.getColumnModel().getColumn(6);
column.setCellRenderer(tcr);
}
if(maximo.compareTo(media)>0){
TableCellRenderer tcr = new ColorirAzul();
TableColumn column = table.getColumnModel().getColumn(7);
column.setCellRenderer(tcr);
}else if(maximo.compareTo(media)<0){
TableCellRenderer tcr = new ColorirVermelho();
TableColumn column = table.getColumnModel().getColumn(7);
column.setCellRenderer(tcr);
}
}//fim do if de selecionado
}//fim do for
}//fim do if de limite mín
E para pintar uso:
class ColorirAzul extends JLabel implements TableCellRenderer{
private static final long serialVersionUID = -4187163147076513197L;
public Component getTableCellRendererComponent(
JTable table, Object value, boolean isSelected,
boolean hasFocus, int row, int column){
setHorizontalAlignment(SwingConstants.CENTER);
setFont(new Font("Serif", Font.BOLD, 12));
setForeground(Color.BLUE);
setText(value.toString());
return this;
}
public void validate() {}
public void revalidate() {}
protected void firePropertyChange(String propertyName,
Object oldValue, Object newValue) {}
public void firePropertyChange(String propertyName,
boolean oldValue, boolean newValue) {}
}
Será que isso ocorre por que eu uso isso para centralizar as células como renderer:
Como eu resolvo isso(sem eliminar esse renderer pois preciso do texto centralizado)?
