Composants avancés de l'arborescence des composants Java Swing

Composants d'arbre de balançoire

La structure arborescente est une forme d'expression d'information couramment utilisée, elle peut afficher intuitivement la structure hiérarchique d'un groupe d'informations. La classe JTree dans Swing est utilisée pour créer des arbres.

Premièrement, créez un arbre simple

JTree a trois méthodes de construction courantes pour créer des arbres.

Méthode de construction La description
JTree () Créer une arborescence par défaut
JTree (racine TreeNode) Créer une arborescence basée sur le nœud racine spécifié
JTree (TreeModel newModel) Créer un arbre basé sur le modèle d'arbre spécifié

La classe DefaultMutableTreeNode implémente l'interface TreeNode, qui est utilisée pour créer des nœuds d'arborescence. Une arborescence ne peut avoir qu'un seul nœud parent et elle peut avoir 0 ou plusieurs nœuds enfants. Utilisez la méthode add (MutableTreeNode newChild) de la classe DefaultMutableTreeNode pour ajouter des nœuds enfants au nœud. Un nœud avec des nœuds enfants est appelé nœud parent et un nœud sans nœud parent est appelé nœud racine.

Méthodes de construction couramment utilisées de la classe DefaultMutableTreeNode

Méthode de construction La description
DefaultMutableTreeNode () Créer un nœud par défaut, autorisant les nœuds enfants par défaut
DefaultMutableTreeNode (objet userObject) Créer un nœud avec l'étiquette spécifiée
DefaultMutableTreeNode (Object userObject, boolean allowChildren) Créez un nœud avec une étiquette spécifiée et spécifiez s'il faut autoriser les nœuds enfants

Créez un arbre simple, le code est le suivant:

package study.czm;

import java.awt.Container;

import javax.swing.JFrame;
import javax.swing.JTree;
import javax.swing.tree.DefaultMutableTreeNode;

public class Study {
    
    

	public static void main(String[] args) {
    
    

		JFrame jf = new JFrame();
		jf.setTitle("表格组件");
		jf.setSize(500, 400);
		jf.setLocationRelativeTo(null);
		jf.setDefaultCloseOperation(jf.EXIT_ON_CLOSE);
		Container c = jf.getContentPane();

		// 创建根节点
		DefaultMutableTreeNode root = new DefaultMutableTreeNode("根节点");
		// 创建一级子节点
		DefaultMutableTreeNode root1 = new DefaultMutableTreeNode("一级子节点1");
		DefaultMutableTreeNode root2 = new DefaultMutableTreeNode("一级子节点2");
		DefaultMutableTreeNode root3 = new DefaultMutableTreeNode("一级子节点3");
		// 创建二级子节点
		DefaultMutableTreeNode root11 = new DefaultMutableTreeNode("二级子节点1");
		DefaultMutableTreeNode root12 = new DefaultMutableTreeNode("二级子节点2");
		DefaultMutableTreeNode root21 = new DefaultMutableTreeNode("二级子节点3");
		// 根节点添加一级子节点
		root.add(root1);
		root.add(root2);
		root.add(root3);
		// 一级子节点添加二级子节点
		root1.add(root11);
		root1.add(root12);
		root2.add(root21);

		JTree tree = new JTree(root);
		c.add(tree);

		jf.setVisible(true);

	}
}

résultat courant:
Insérez la description de l'image ici

Deuxièmement, gérez l'événement de nœud sélectionné

Les nœuds de l'arborescence peuvent être sélectionnés et désélectionnés. En capturant les événements de sélection de nœuds, les opérations correspondantes peuvent être traitées. Il existe trois modes de sélection d'arborescence. Le mode de sélection d'arborescence peut être défini par des objets de la classe TreeSelectionModel.

La constante statique représentant le mode de sélection dans la classe TreeSelectionModel

Constante statique La description
SINGLE_TREE_SELECTION N'en autorisez qu'un seul à être sélectionné
CONTIGUOUS_TREE_SELECTION Autoriser plusieurs sélections à la suite
DISCONTIGUOUS_TREE_SELECTION Autoriser plusieurs sélections, le mode par défaut

La classe TreePath représente le chemin du nœud d'arbre, c'est-à-dire que le nœud parent auquel appartient le nœud enfant et le nœud parent auquel appartient le nœud parent peut être obtenu via cette classe, jusqu'au nœud racine du numéro.

Méthodes courantes de la classe TreePath

méthode La description
getPath () Renvoie les objets de tous les nœuds du chemin sous la forme d'un tableau Object, l'ordre dans le tableau va du nœud racine aux nœuds enfants
getLastPathComponent () Récupère l'objet du dernier nœud du chemin
getParentPath () Récupère le chemin sauf le dernier nœud du chemin
pathByAddingChild (objet enfant) Obtenez le chemin après avoir ajouté le nœud spécifié au chemin
getPathCount () Obtenez le nombre de nœuds inclus dans le chemin
getPathComponent (élément int) Récupère l'objet nœud à la position d'index spécifiée dans le chemin

Trois, traversez les nœuds de l'arbre

Il existe quatre méthodes pour parcourir les nœuds d'arbre, traverser en pré-ordre, traverser en post-ordre, traverser d'abord avec la largeur et traverser d'abord avec la profondeur. Les méthodes de parcours spécifiques du parcours post-ordre et du parcours profondeur d'abord sont les mêmes.

Traverser en pré-ordre: Traverser
Insérez la description de l'image ici
en post-ordre: traverser
Insérez la description de l'image ici
avec la largeur en premier: traverser
Insérez la description de l'image ici
avec la profondeur en premier:
Insérez la description de l'image ici
Grâce à la méthode children () de la classe DefaultMutableTreeNode, vous pouvez obtenir un objet d'énumération qui ne contient que les nœuds enfants du nœud pour parcourir rapidement les nœuds enfants du nœud.

Méthodes courantes de la classe DefaultMutableTreeNode

méthode La description
getLevel () Obtenez la valeur de niveau du nœud par rapport au nœud racine, telle que la valeur de niveau du nœud enfant du nœud est 1
getDepth () Obtenez la profondeur du nombre avec ce nœud comme nœud racine. Si le nœud n'a pas d'enfants, la profondeur est 0
getParent () Récupère l'objet de nœud parent du nœud
getChildCount () Obtenez le nombre de nœuds enfants que le nœud a
getFirstChild () Récupère le premier objet nœud enfant du nœud
getSiblingCount () Obtenez le nombre de nœuds frères appartenant au nœud
getNextSibing () Obtenir le nœud frère suivant du nœud
getPreviousSibling Obtenir le nœud frère précédent du nœud
getPath () Obtenez le chemin du nœud
isRoot () Déterminez si le nœud est le nœud racine
isLeaf () Déterminez si le nœud est un nœud feuille

Quatrièmement, l'arbre personnalisé

Lorsque vous utilisez une arborescence, il est souvent nécessaire d'effectuer une série de paramètres sur l'arborescence, tels que les icônes de nœud, les lignes de connexion entre les nœuds et l'état d'expansion de l'arborescence. Utilisez les méthodes de première ligne de la classe JTree pour personnaliser l'arborescence.

1. Paramètre de poignée du nœud racine

Paramètre par défaut:
Insérez la description de l'image ici
si vous ne voulez pas de poignée devant le nœud, définissez-la tree.setRootVisible(false);.
Insérez la description de l'image ici
2. Paramètres de l'icône du nœud

méthode La description
setLeafIcon (icône newIcon) Définir l'icône du nœud feuille
setClosedIcon (icône newIcon) Définir l'icône lorsque le nœud est à l'état réduit
setOpenIcon (icône newIcon) Définir l'icône lorsque le nœud est à l'état développé

3. Paramètre de ligne de connexion de nœud

Paramètre par défaut: à définir
Insérez la description de l'image ici
si vous ne souhaitez pas avoir de ligne de connexion tree.putClientProperty("JTree.lineStyle", "None");.
Insérez la description de l'image ici
Si défini sur tree.putClientProperty("JTree.lineStyle","Horizontal");. Il deviendra une ligne de colonne horizontale.
Insérez la description de l'image ici

Cinq, maintenez le modèle d'arbre

Lorsque vous utilisez une arborescence, il est parfois nécessaire de fournir des fonctions de maintenance pour l'arborescence, telles que l'ajout, la suppression, la modification et la vérification des opérations. Ces opérations doivent être implémentées via la classe de modèle d'arbre DefaultTreeModel.

1. Ajout d'un nœud d'arbre
La méthode insertNodeInto () de la classe DefaultTreeModel peut ajouter un nouveau nœud au modèle d'arbre.

insertNodelnto(MutableTreeNode newChild, MutableTreeNode parent, int index);

newChild: l'objet de nœud nouvellement ajouté.
parent: objet du nœud parent où se trouve le nœud nouvellement ajouté.
index: la position d'index du nœud nouvellement ajouté.

2. Modifier le nœud de l'arborescence
La méthode nodeChangen () de la classe DefaultTreeModel est utilisée pour modifier le nœud.

nodeChanged(treeNode);

treeNode: l'objet de nœud modifié.

3. Supprimer le nœud
La méthode removeNodeFromParent () de la classe DefaultTreeModel est utilisée pour supprimer le nœud spécifié dans l'arborescence.

removeNodeFromParent(treeNode);

treeNode: L'objet noeud à supprimer.

Remarque: Le nœud racine de l'arborescence ne peut pas être supprimé. Si vous essayez de supprimer le nœud racine, une exception se produira.

Je suppose que tu aimes

Origine blog.csdn.net/javanofa/article/details/105968417
conseillé
Classement