Galera, boa tarde.
Estou precisando de uma ajuda com jtable.
Tem uma regra ao qual eu pinto somente a celula que estiver na condição abaixo.
String valor_selecionado = (String) modelo.getValueAt(linha_selecionada, coluna_porcentagem);
int perc_valida_cor = Integer.parseInt(valor_selecionado.substring(0,2));
//JOptionPane.showMessageDialog(rootPane,"Linha Selecionada.: "+linha_selecionada+""
// + "\nValor a validar.: "+perc_valida_cor);
if(perc_valida_cor <= 50.0){
AlteraCorPercentual_vermelho();
JOptionPane.showMessageDialog(rootPane,"Menor que 50.: ");
}else{
AlteraCorPercentual_Branco();
JOptionPane.showMessageDialog(rootPane,"Maior que 50.: ");
}
Ele funciona, porém está validando a ultima linha e desfazendo as outras…
Segue foto de exemplo.
Vlw pela ajuda…
Não sei se isso vai lhe ajudar, mais eu colori as linhas da minha jtable com a seguinte logica:
- Linhas pares recebe uma cor
- Linhas impares recebe branco
Segue o código:
tabelaConsultaCliente = new JTable(new TableModelCliente(cabecalho)){
private static final long serialVersionUID = 1L;
// COLORINDO AS LINHAS DA JTABLE
public Component prepareRenderer(TableCellRenderer renderer, int rowIndex, int vColIndex) {
Component c = super.prepareRenderer(renderer, rowIndex, vColIndex);
if(rowIndex % 2 == 0 && !isCellSelected(rowIndex, vColIndex)) {
c.setBackground(SystemColor.menu);
}
else {
c.setBackground(Color.white);
}
return c;
}
};
Espero ter ajudado em algo… abraço
será que não seria melhor você capturar todas as linhas que deram menor do que 50% e depois mandar marcar de forma mais precisa com este numero?
pelo visto ele já passou pelo 48%… marcando-o e desmarcando-o…
vc diz pra percorrer toda as linhas da coluna de percentual e analisar a regra…e pintar as linhas?
Qual seria o melhor metodo pra fazer isso?
Por favor, não solicite urgência no fórum. Além disso, pare um tempo para ler as regras:
[quote=gustavocoolt]Não sei se isso vai lhe ajudar, mais eu colori as linhas da minha jtable com a seguinte logica:
- Linhas pares recebe uma cor
- Linhas impares recebe branco
Segue o código:
tabelaConsultaCliente = new JTable(new TableModelCliente(cabecalho)){
private static final long serialVersionUID = 1L;
// COLORINDO AS LINHAS DA JTABLE
public Component prepareRenderer(TableCellRenderer renderer, int rowIndex, int vColIndex) {
Component c = super.prepareRenderer(renderer, rowIndex, vColIndex);
if(rowIndex % 2 == 0 && !isCellSelected(rowIndex, vColIndex)) {
c.setBackground(SystemColor.menu);
}
else {
c.setBackground(Color.white);
}
return c;
}
};
Espero ter ajudado em algo… abraço[/quote]
amigo… entendi a logica…
Você está colocando isso numa classe?
To perdendo o sono com o esse problema…
Agora ele esta seguindo minhas regras… mas pinta a linha inteira e nao só a que eu escolhi (no caso a ‘8’).
jTable1.setDefaultRenderer(Object.class, new DefaultTableCellRenderer() {
public Component getTableCellRendererComponent(JTable table, Object value,
boolean isSelected, boolean hasFocus, int row, int column) {
//super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
Component cell = super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
Object ref = table.getValueAt(row, 8);
if (ref != null && Integer.parseInt(ref.toString().substring(0, 2)) <= 70) {
//setBackground(Color.RED); // Seleciona o Fundo vermelho
//setForeground(Color.WHITE);
cell.setBackground(Color.red);
} else {
//JOptionPane.showMessageDialog(rootPane,"teste FALHA");
//setBackground(Color.WHITE);
//setForeground(Color.BLACK);
cell.setBackground(Color.WHITE);
}
return cell;
}
});
[quote=marcospaulo.suporte]
mas pinta a linha inteira e nao só a que eu escolhi (no caso a ‘8’).
[code]
jTable1.setDefaultRenderer(Object.class, new DefaultTableCellRenderer() {
public Component getTableCellRendererComponent(JTable table, Object value,
boolean isSelected, boolean hasFocus, int row, int column) {
…
});
[/code][/quote]
Pois é, este método recebe um parâmetro “column” também. Você sabe que coluna é que tem de deixar pintada? Você está ignorando o parâmetro “column”, por isso é que a linha inteira (row) está sendo pintada. Use o parâmetro “column” no seu método também.
entanglement,
Não sei nem como agradecer…, vlw mesmo!!
Burrice minha :shock: … eu eu reli o codigo uma porrada de vez e não notei isso.
DEU CERTINHO.