jTable deixar pintado celula [RESOLVIDO]

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:

OK.

Grato

[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!! :smiley:

Burrice minha :shock: … eu eu reli o codigo uma porrada de vez e não notei isso.

DEU CERTINHO.