Mudar as cores das linhas de uma JTable conforme forem adcionanda os dados do bd

4 respostas
M

Eu ja pesquisei muito em foruns ja li muito mas nao consegui fazer oq eu estou querendo

Basicamente consiste em mudar as linhas de uma JTable quando o valor vier do Bd , ouseja ,
Se um valor for inferior a um numero pinta a linha de amarelo
se o valor for superior ao numero pinta a linha de vermelho

Por favor deem uma olhada no codigo
Porque a divida esta na linha 40

import javax.swing.*;
import java.awt.*;
import javax.swing.table.*;
import java.sql.*;

public class Estudos extends JFrame{
  public Estudos(){
    super("JTable");
		
    final DefaultTableModel modelo = new DefaultTableModel();
    
    // constrói a tabela
    JTable tabela = new JTable(modelo);
    
    // Cria duas colunas
    modelo.addColumn("Código");
    modelo.addColumn("Nome");
    modelo.addColumn("Senha");
    modelo.addColumn("Idade");
    
    // exibe os dados da tabela MySQL
    try{
      Class.forName("com.mysql.jdbc.Driver").newInstance();
      Connection conn = DriverManager.getConnection("jdbc:mysql://localhost/test?user=root&password=1234");
           
      // procedimentos para obter os dados de uma tabela
      Statement stmt = conn.createStatement();
      String query = "SELECT * FROM USUARIOS";
      ResultSet rs = stmt.executeQuery(query);
      
      while(rs.next()){ 
        int id = rs.getInt("CODIGO");
        String nome = rs.getString("NOME");
        String senha = rs.getString("SENHA");
        int idade = rs.getInt("IDADE");
 int idade = rs.gettInt("id");



//Pergunta  : Se o id for menor que 10 pinta linha de verde se id for igual a 10 pinta linha de amarelo e se is for maior que 10 pinta linha de vermelho
  


        modelo.addRow(new Object[]{new Integer(id), nome, senha, new Integer(idade), new Integer(id)});
      }
           
      // fim procedimento para obter os dados
      } 
      catch(SQLException ex){
           System.out.println("SQLException: " + ex.getMessage());
           System.out.println("SQLState: " + ex.getSQLState());
           System.out.println("VendorError: " + ex.getErrorCode());
      }
      catch(Exception e){
        System.out.println("Problemas ao tentar conectar com o banco de dados");	
    }
    // fim MySQL
    
    tabela.setPreferredScrollableViewportSize(new Dimension(350, 50));
	
    Container c = getContentPane();
    c.setLayout(new FlowLayout());
			
    JScrollPane scrollPane = new JScrollPane(tabela);
    c.add(scrollPane);
    	
    setSize(400, 300);
    setVisible(true);
  }
	
  public static void main(String args[]){
    Estudos app = new Estudos();
    app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  }
}

Desde ja muito obrigado e até logo

4 Respostas

P

Tópico bem parecido:

http://www.guj.com.br/posts/list/131981.java#710511

ViniGodoy

Por favor, ao postar, desligue o caps lock.

Além de prejudicar horrívelmente a leitura, as maiúsculas geralmente são usadas para dar ênfase, ou para demonstrar que você está gritando. Fora que, usar o título do tópico em letras maiúsculas também pode ser encarado como falta de educação, uma vez que dá a impressão que você quer ter mais direito ou chamar mais a atenção do que outros usuários.

Da próxima, já sabe. :wink:

M

Foi mal ViniGodoy sou novo em forum .

Vendo a sua dica eu editei a pergunta .
Vou executar o codigo que eu encontrei no link do pozzo e volto aqui pra falar se deu certo
Este erro nao acontecera novamente .

Obrigado aos amigos que estao colaborando comigo.

M

Bom dia amigos eu segui o link do pozzo mas nao fui feliz .

O metodo que encontrei no link é esse:  jxTable.setHighlighters(HighlighterFactory.createSimpleStriping(new Color(200, 214, 247)));

Mas este metodo faz um efeito zebrinha  ele pinta uma linha sim outra nao

E o que eu queria era um metodo que pintasse a linha alternadamente pode ser no jxtable ou de preferencia no jtable

tipo:

if(id == 14){          // pinta linha (só esta linha)de vermelho e com as outas nao fazer nada

tabela.setHighlighters(HighlighterFactory.createSimpleStriping(new Color(200, 214, 247)));

}

É estranho uma coisa aparentemente tao simples ser tao dificel de se fazer.

Gostaria que os amigos daki do forum me dessem mais sujestoes , dicas, detalhes ou mesmo um codigo-fomt com um exemplo de como resolver este ploblema, pra eu continuar meus estudos .

Obrigado. E at++

Criado 9 de julho de 2009
Ultima resposta 10 de jul. de 2009
Respostas 4
Participantes 3