JTable (NOVO)

1 resposta
marthian_2

Pessoal é o seguinte, quero preencher uma tabela com dados do BD, so que armazeno esses dados em um arrayList, quando executo o programa a tabela me fornece o primeiro contato repetido pelo numero de contatos cadastrados no BD. Segue o codigo aé.

public class Tela extends JFrame {

private static ArrayList linhasContato;
private static String[] colunas;
private JTable jTable=null;
public Tela(ArrayList linhasContato, String[] colunas) throws HeadlessException {
	// TODO Auto-generated constructor stub
	
	super();
	this.linhasContato=linhasContato;
	this.colunas=colunas;
	initialize();
	show();
	 


}

public Tela(GraphicsConfiguration arg0) {
	super(arg0);
	// TODO Auto-generated constructor stub
	initialize();
}

public Tela(String arg0) throws HeadlessException {
	super(arg0);
	// TODO Auto-generated constructor stub
	initialize();
}

public Tela(String arg0, GraphicsConfiguration arg1) {
	super(arg0, arg1);
	// TODO Auto-generated constructor stub
	initialize();
}

private Vector getProximaLinha(ArrayList rs, String[] rsmd) throws SQLException{
	Vector linhaAtual=new Vector();
	
	
	for (int i=0;i<rsmd.length;i++){
	 linhaAtual.addElement(rs.get(i));
	 
	 }
	return linhaAtual;
}

private void mostrarResultados(ArrayList linhasContato) throws SQLException{
	

Vector coluna= new Vector();
Vector linhas=new Vector();

try{
	
	for(int i=0;i<colunas.length;i++)
		coluna.addElement(colunas[i]);
	for (int i=0;i<linhasContato.size();i++)
		linhas.addElement(getProximaLinha(linhasContato,colunas));
	
	
	jTable=new JTable(linhas, coluna);
	JScrollPane jScrollPane=new JScrollPane(jTable);
	getContentPane().add(jScrollPane, java.awt.BorderLayout.CENTER);
	validate();
	
}
catch (SQLException sqlex) {sqlex.printStackTrace();}
}

private void getTable(){

try {

mostrarResultados(linhasContato);

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}
/**
 * This method initializes jScrollPane	
 * 	
 * @return javax.swing.JScrollPane	
 */

public static void main(String[] args) {
	// TODO Auto-generated method stub
	SwingUtilities.invokeLater(new Runnable() {
		public void run() {
			Tela thisClass = new Tela(linhasContato,colunas);
			thisClass.setVisible(true);
		}
		
	});
}

/**
 * This method initializes this
 * 
 * @return void
 */
private void initialize() {
	getTable();
	this.setSize(350, 230);
	this.setTitle("Resultado");
	
	 
}

}

Esse aqui é parte do main principal:

agenda.adicionarContato(contato);
List objetos =agenda.listarContato();

ArrayList linha =new ArrayList();
    for (int i=0;i<objetos.size();i++) 
    	for(int j=0;j<3;j++){
       if(objetos.get(i) instanceof ContatoTO)
       linha.add(transformaEmArrayList(objetos.get(i)).get(j));
       
    	
       
    }
  
    String[] colunas={"ID","NOME","DATA DE NASCIMENTO"};
    new Tela(linha,colunas);
    
    

      
    }

private static ArrayList transformaEmArrayList(ContatoTO contato) {
	
	ArrayList linha = new ArrayList();
	linha.add(contato.getId());
	linha.add(contato.getNome());
	linha.add(contato.getNascimento());
	
	
	return linha;
}

Alguma sugestão?

1 Resposta

ViniGodoy

Crie o seu próprio TableModel, filho de AbstractTableModel.

Antes disso, manipular tables é uma tarefa muito difícil.

Criado 20 de outubro de 2007
Ultima resposta 20 de out. de 2007
Respostas 1
Participantes 2