Duvida de ArryList com For

Pessoal, blz?

Tenho uma tabela no banco, e necessito buscar algumas informações desta tabela, para apresentar em uma Jtree. Pensei em criar uma arraylist, e incluir nesta arraylist os dados e apos incluir a arraylist na Jtree, mas nao ta dando muito certo.

private void carregar() throws SQLException { ResultSet arvore_p = null; ResultSet arvore_nome = null; try { arvore_p = conn.prepareStatement("select max(nr_sequencia) from fin_cpa").executeQuery(); arvore_nome = conn.prepareStatement("SELECT ARVORE, NR_SEQUENCIA FROM FIN_CPA ORDER BY ARVORE").executeQuery(); if (arvore_p.next() && arvore_nome.next()) { for (int tamanho = 0; tamanho <= arvore_p.getInt(1); tamanho++) { System.out.println("Tamanho " +tamanho); System.out.println(arvore_nome.getString(tamanho)); //o problema ta aqui, quando eu coloco para buscar a posição tamanho que é um inteiro incrementado no for, apresenta erro de indice de coluna invalido. Porem se eu colocar no lugar de "arvore_nome.getString(tamanho)", colocar (arvore_nome.getString(1), imprime corretamente. } String aa = arvore_p.getString(1); DefaultMutableTreeNode arvore_pp = new DefaultMutableTreeNode(aa); lista.add(arvore_pp); arvorepagar = new JTree(lista); sp.setViewportView(arvorepagar); System.out.println("recarregou"); } else { System.out.println("nao passou");} } catch (Exception a) { System.out.println("Erro: " +a); }

Como poderia incluir as informacoes da coluna arvore que buscam no banco dentro do arraylist para apos incluir ele no Jtree?

Primeiro, que baita código confuso colega. Edentação e organização são essenciais no desenvolvimento.
Procure refatorar este método e deixa-lo melhor organizado, foi complicado entende-lo (se é que eu entendi).

Sobre o laço de repetição, a sua segunda consulta retorna dois campos (ARVORE, NR_SEQUENCIA), portanto, se usar índice via ResultSet, só terá as posições 1 e 2, certo?

Outro detalhe importante, é que tu usando o .next() muda a posição do “ponteiro” do seu banco.
Como eu disse, refatora seu código, arruma esse método e seja objetivo no que tu quer, para melhor ajudarmos.

Abraços.

Nel, obrigado pelas Dicas!

em vez de If, utilizei o While, e a principio deu certo:

private void carregar() throws SQLException { ResultSet arvore_nome = null; String dados_arvore = null; try { arvore_nome = conn.prepareStatement("SELECT ARVORE FROM FIN_CPA ORDER BY ARVORE").executeQuery(); while (arvore_nome.next()) { dados_arvore = arvore_nome.getString(1); //variavel receber resultado do select DefaultMutableTreeNode arvore_pp = new DefaultMutableTreeNode(dados_arvore); //cria nó da arvore com valor do select lista.add(arvore_pp); //adiciona o nó dentro da arvore arvorepagar = new JTree(lista); //cria arvore e inclui a lista. sp.setViewportView(arvorepagar); } } catch (Exception a) { System.out.println("Erro ao carregar arvore: " +a); } }

Pessoal, conforme post anterior, consegui incluir os itens, sem utilizar o arraylist.

Mas estou com outro problema. Ao abrir a aplicacao, carrega corretamente a informacao do banco e inclui na Jtree. Ai tenho o seguinte metodo para saber qual item da arvore da selecionado, para trazer as informacoes deste item selecionado do banco posteriormente:

//aqui é o metodo que retorna o que esta selecionado		
arvorepagar.addMouseListener(new MouseAdapter() {
	public void mouseClicked(MouseEvent e) {
		System.out.println(arvorepagar.getSelectionPath().getPathComponent(1)); //imprime o item da arvore selecionado
	}
});

Acima eu consigo obter o item selecionado da arvore corretamente, para depois implementar o select para buscar as demais informacoes no banco do item selecionado.

O problema, eh quando eu insiro um novo item na arvore, ele aparece certinho nela, mas a partir deste momento, o metodo acima nao funciona mais, ou seja, depois que adiciono na arvore, e clicar em cima de algum item dela ele nao busca e nao imprimi mais o selecionado. Abaixao o metodo que inclui o novo item na arvore:

private void addconta(String conta) {
		conta = nmtitulo.getText();
		DefaultMutableTreeNode contaNo = new DefaultMutableTreeNode(conta);
		lista.add(contaNo);
		arvorepagar = new JTree(lista);
		sp.setViewportView(arvorepagar);
}

entao pensei, deve recarregar novamente a arvore, chamar novamente o metodo que postei post anterior, mas ai ficam duplicados os itens na Jtree, pois seria necessrio remover tudo e depois adicionar novamente, mas nao to conseguindo, nao tenho ideia de como fazer um metodo para excluir todos os itens para depois incluir novamente.

Alguem poderia me dar uma luz?