Alguem tem alguma ideia para explicar por que quando se clica no botao "nova" a arvore não é "repintada" na tela? O botao "Excluir" funciona.
Observem tambem que depois de clicar em "nova" o botão excluir não funciona mais, mas isso é correto, pois o modelo foi refeito.... só não aparece na tela a mudança.
Sds
public class TesteTree extends JFrame {
DefaultTreeModel modelTree = null;
JTree tree =null;
public TesteTree() {
DefaultMutableTreeNode root = new DefaultMutableTreeNode("Paises");
String[] paises = new String[]{"Brasil","Argentina","Paraguai","Venezuela"};
for(int i = 0 ; i < paises.length; i ++) {
root.add(new DefaultMutableTreeNode(paises[i]));
}
modelTree = new DefaultTreeModel(root);
tree = new JTree(modelTree);
JButton btnExcluir = new JButton("Excluir");
btnExcluir.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
DefaultMutableTreeNode selectedNode = (DefaultMutableTreeNode)tree.getLastSelectedPathComponent();
modelTree.removeNodeFromParent(selectedNode);
}
});
JButton btnNova = new JButton("Nova");
btnNova.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
DefaultMutableTreeNode novaRaiz = new DefaultMutableTreeNode("Nova arvore");
modelTree = new DefaultTreeModel(novaRaiz);
modelTree.reload(novaRaiz);
}
});
JPanel pnlBotoes = new JPanel();
pnlBotoes.add(btnExcluir);
pnlBotoes.add(btnNova);
this.setLayout(new BorderLayout());
this.add(tree, BorderLayout.CENTER);
this.add(pnlBotoes,BorderLayout.SOUTH);
}
public static void main(String args[]) {
TesteTree myTeste = new TesteTree();
myTeste.setSize(new Dimension(400,300));
myTeste.setVisible(true);
}
}