Olá amigos do fórum,
Sou iniciante no JAVA, estou gostando bastante mas ainda me acostumando a idéia de objetovs (estou acostumado com PHP).
Estou fazendo uma pequena aplicação, apenas para aprendizado, e me sergiu um dúvida, a qual já bolei uma possível solução, mas acredito ter um modo menos “gambiarra” para solucionar o mesmo.
Tenho um JTree assim:
DefaultMutableTreeNode lista_animais = carregaAnimais();
JTree arvore_animais = new JTree(lista_animais);
JScrollPane animais = new JScrollPane(arvore_animais);
private DefaultMutableTreeNode carregaAnimais(){
DefaultMutableTreeNode no1 = new DefaultMutableTreeNode("Animais");
try {
ResultSet rs = conex.Consulta("select distinct tipo from animais");
if (rs.first()){
do {
DefaultMutableTreeNode no2 = new DefaultMutableTreeNode(rs.getString("tipo"));
no1.add(no2);
try {
ResultSet as = conex.Consulta("select nome from animais where tipo = '" +rs.getString("tipo")+ "'");
if (as.first()){
do {
DefaultMutableTreeNode no3 = new DefaultMutableTreeNode(as.getString("nome"));
no2.add(no3);
} while (as.next());
}
} catch (Exception e) {
JOptionPane.showMessageDialog(null, e, "Input Error", JOptionPane.ERROR_MESSAGE);
}
} while (rs.next());
}
} catch (Exception e) {
JOptionPane.showMessageDialog(null, e, "Input Error", JOptionPane.ERROR_MESSAGE);
}
return no1;
}
Até ai beleza, agora minha dúvida:
Quando eu clicar em um elemento listado no JTree, quero saber qual ID aquele animal tem no banco mysql (cada linha da tabela tem um ID, reparem que esse ID não é mostrado no JTree).
Para dar “funcionalidade” ao JTree, usei um exemplo que achei pronto:
arvore_animais.addMouseListener(ml);
... etc ...
MouseListener ml = new MouseAdapter() {
public void mousePressed(MouseEvent e) {
TreePath caminho = arvore_animais.getPathForLocation(e.getX(), e.getY());
JOptionPane.showMessageDialog(null, caminho, "Input Error", JOptionPane.ERROR_MESSAGE);
}
};
Pois bem, para saber o ID do animal selecionado, eu pensei em montar um array pelo nome do animal, o qual contem o ID do mesmo, mas achei isso muito porco, deve ter uma forma mais inteligente e limpa de ser fazer isso.
Poderiam me ajudar com isso?
Já procurei bastante, mas não achei uma solução, e se achei, não consegue identifica-la devido a não ter conhecimento suficiente ainda.
Desde já agradeço muito!
Rodrigo