oi galera estou com um pequeno problema.
SE PUDEREM ME DAR UMA AJUDA AGRADEÇO!
tenho um cod. que pinta a linha especifica da JTable dependendo de uma condição na coluna Status
porem meu cod. só pinta a cédulas que tem string e não as que tem números.
segue o código a baixo.
//---------------------------------------
masterTable.setDefaultRenderer(Object.class, new DefaultTableCellRenderer() {
@Override
public Component getTableCellRendererComponent(JTable table, Object value,
boolean isSelected, boolean hasFocus, int row, int column) {
super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
//A coluna do status é 10
Object ref = table.getValueAt(row, 10);//Coluna Status
//Coloca cor em todas as linhas,COLUNA(3) que tem o valor “Conciliar ou OK”
if (ref != null && ref.equals(“Conciliar”)) {//Se Status for igual a “Conciliar”
setBackground(Color.RED);//Preenche a linha de vermelho
setForeground(Color.WHITE);//E a fonte de branco
} else {
boolean sel = isSelected;
if (sel == true) {
setBackground(getBackground());
setForeground(getForeground());
} else {//Se Status não for “Aberto”
setBackground(Color.WHITE);//Preenche a linha de branco
setForeground(new Color(51, 51, 51));//E a fonte de preto
}
}
return this;
}
});
//---------------------------------------
imagem da JTable
Creio que assim resolva sua necessidade:
masterTable.setDefaultRenderer(Object.class, new DefaultTableCellRenderer() {
@Override
public Component getTableCellRendererComponent(JTable table,
Object value,
boolean isSelected,
boolean hasFocus,
int row,
int column) {
Component renderizador = super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
Object status = table.getValueAt(row, 10);
if ("Conciliar".equals(status)) {
renderizador.setBackground(Color.RED);
renderizador.setForeground(Color.WHITE);
} else if (!isSelected) {
renderizador.setBackground(Color.WHITE);
renderizador.setForeground(new Color(51, 51, 51));
}
return renderizador;
}
});
meu amigo continua preenchendo só a cédulas da tabela que tem letras as com números não estão preenchendo.
http://www.guj.com.br/uploads/default/original/3X/a/9/a9608973bfdb400ec2e7c67b72c81d22e63b503a.png
Deve ser por causa do tipo das colunas, não sei como você implementou seu TableModel
.
Provavelmente setando o mesmo renderizador para colunas numéricas deve resolver:
DefaultTableCellRenderer renderizador = new DefaultTableCellRenderer() {
@Override
public Component getTableCellRendererComponent(JTable table,
Object value,
boolean isSelected,
boolean hasFocus,
int row,
int column) {
Component componente = super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
Object status = table.getValueAt(row, 10);
if ("Conciliar".equals(status)) {
componente.setBackground(Color.RED);
componente.setForeground(Color.WHITE);
} else if (!isSelected) {
componente.setBackground(Color.WHITE);
componente.setForeground(new Color(51, 51, 51));
}
return componente;
}
};
masterTable.setDefaultRenderer(String.class, renderizador);
masterTable.setDefaultRenderer(Double.class, renderizador);
masterTable.setDefaultRenderer(Integer.class, renderizador);
1 curtida
muito obrigado!
deu certo meu codigo ficou assim
public void colorir(){
DefaultTableCellRenderer renderizador = new DefaultTableCellRenderer() {
@Override
public Component getTableCellRendererComponent(JTable table,
Object value,
boolean isSelected,
boolean hasFocus,
int row,
int column) {
Component componente = super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
Object status = table.getValueAt(row, 10);
if ("Conciliar".equals(status)) {
componente.setBackground(Color.RED);
componente.setForeground(Color.WHITE);
} else if (!isSelected) {
componente.setBackground(Color.WHITE);
componente.setForeground(new Color(51, 51, 51));
}
return componente;
}
};
masterTable.setDefaultRenderer(String.class, renderizador);
masterTable.setDefaultRenderer(Double.class, renderizador);
masterTable.setDefaultRenderer(Integer.class, renderizador);
masterTable.setDefaultRenderer(Exercicio.class, renderizador);
masterTable.setDefaultRenderer(Mes.class, renderizador);
masterTable.setDefaultRenderer(Conta.class, renderizador);
1 curtida