Expansion spécifiques JTree chemin
J'ai un problème avec l'expansion de la JTree nœuds. Je commence lors de l'utilisation sélectionne un nœud de tout, mais le chemin vers le nœud sélectionné et le nœud sélectionné lui-même réduit. J'ai essayé d'utiliser
tree.collapsePath(new TreePath(tree.getModel().getRoot()));
tree.expandPath(new TreePath(e111.getPath()));
quelque chose comme cela, mais il ne semble avoir aucun effet et je n'ai vraiment aucune idée de comment je peux faire ce
Voici comment mon arborescence:
http://img220.imageshack.us/img220/3450/jtreepng.png
Si je clique sur 1.1.1 je veux que tout s'est effondré, mais l'1.1.1 nœud et les éléments de la voie).
Voici l'application que j'ai créée:
public class SelectableTree extends JFrame implements TreeSelectionListener {
public static void main(String[] args) {
new SelectableTree();
}
DefaultMutableTreeNode root;
DefaultMutableTreeNode e1;
DefaultMutableTreeNode e2;
DefaultMutableTreeNode e3;
DefaultMutableTreeNode e11;
DefaultMutableTreeNode e22;
DefaultMutableTreeNode e33;
DefaultMutableTreeNode e111;
DefaultMutableTreeNode e222;
DefaultMutableTreeNode e333;
DefaultMutableTreeNode aChild;
private JTree tree;
private JTextField currentSelectionField;
public SelectableTree() {
super("JTree Selections");
WindowUtilities.setNativeLookAndFeel();
addWindowListener(new ExitListener());
Container content = getContentPane();
root = new DefaultMutableTreeNode("Root");
e1 = new DefaultMutableTreeNode("1");
e2 = new DefaultMutableTreeNode("2");
e3 = new DefaultMutableTreeNode("3");
e11 = new DefaultMutableTreeNode("1.1");
e22 = new DefaultMutableTreeNode("2.2");
e33 = new DefaultMutableTreeNode("3.3");
e111 = new DefaultMutableTreeNode("1.1.1");
e222 = new DefaultMutableTreeNode("2.2.2");
e333 = new DefaultMutableTreeNode("3.3.3");
root.add(e1);
root.add(e2);
root.add(e3);
e1.add(e11);
e2.add(e22);
e3.add(e33);
e11.add(e111);
e22.add(e222);
e33.add(e333);
tree = new JTree(root);
tree.addTreeSelectionListener(this);
content.add(new JScrollPane(tree), BorderLayout.CENTER);
currentSelectionField = new JTextField("Current Selection: NONE");
content.add(currentSelectionField, BorderLayout.SOUTH);
setSize(250, 275);
setVisible(true);
}
public void valueChanged(TreeSelectionEvent event) {
tree.clearSelection();
tree.collapsePath(new TreePath(tree.getModel().getRoot()));
tree.expandPath(new TreePath(e111.getPath()));
}
Edit: curieusement le tree.collapsePath
fonctionne bien, il semble que tree.expandPath(new TreePath(e111.getPath()));
est le problème
OriginalL'auteur Ivo | 2012-06-29
Vous devez vous connecter pour publier un commentaire.
Swing objets GUI doit être construit et manipulé seulement sur le event dispatch thread.
OriginalL'auteur trashgod
Avez-vous vérifié la javadoc de la
expandPath
méthode. La méthode est exactement ce qu'il décrit:est droit; votre exemple a également besoin de plus
invokeLater()
, la montre ici.OriginalL'auteur Robin
Utilisation
au lieu de
OriginalL'auteur Henry Lazarte