Función: Crear un menú de árbol Descripción: Crear una estructura de menú de árbol es similar a crear una barra de menú y se crea en función de niveles y modelos.
Cree objetos de nodo raíz, nodo secundario y nodo nieto a través de la clase DefaultMutableTreeNode y luego use DefaultTreeModel
La clase utiliza el nodo raíz para crear un objeto de modelo de árbol y luego inserta el objeto de nodo en el modelo de árbol mediante el método treeModel.insertNodeInto.
Representación:
Código:
importar java.awt.*; importar javax.swing.*; importar javax.swing.tree.*; importar javax.swing.event.*; árbol de clase pública extiende JFrame implementa TreeSelectionListener {etiqueta JLabel privada() { super ("Menú de árbol"); setSize(400,400); Contenedor contenedor = getContentPane(); //Crear nodo raíz y nodo secundario DefaultMutableTreeNode root = new DefaultMutableTreeNode("Editor de texto"); DefaultMutableTreeNode node1 = new DefaultMutableTreeNode("Archivo"); DefaultMutableTreeNode node2 = new DefaultMutableTreeNode("Editar"); //Utilice el nodo raíz para crear un TreeModel DefaultTreeModel treeModel = new DefaultTreeModel(root). ); //Insertar nodos secundarios nodo1,nodo2 treeModel.insertNodeInto(node1,root,root.getChildCount()); treeModel.insertNodeInto(node2,root,root.getChildCount()); //Crea un nodo secundario del nodo nodo1 e inserta DefaultMutableTreeNode leafnode = new DefaultMutableTreeNode("Open" ) ; treeModel.insertNodeInto(leafnode,node1,node1.getChildCount()); leafnode = new DefaultMutableTreeNode("Guardar"); treeModel.insertNodeInto(leafnode,node1,node1.getChildCount()); ; treeModel.insertNodeInto(leafnode,node1,node1.getChildCount()); leafnode = new DefaultMutableTreeNode("Close"); treeModel.insertNodeInto(leafnode,node1,node1.getChildCount()); //Crea un nodo secundario del nodo2 y insértelo leafnode = new DefaultMutableTreeNode("cut"); treeModel.insertNodeInto(leafnode,node2,node2.getChildCount()); leafnode = new DefaultMutableTreeNode("copiar"); treeModel.insertNodeInto(leafnode,node2,node2.getChildCount()); treeModel.insertNodeInto(leafnode,node2,node2.getChildCount()); //Crea un objeto de árbol JTree tree = new JTree(treeModel); //Establece la selección de Tree para seleccionar solo un nodo a la vez tree.getSelectionModel(); .setSelectionMode( TreeSelectionModel.SINGLE_TREE_SELECTION); //Registra el oyente tree.addTreeSelectionListener(this); tree.setRowHeight(20); //Crear objeto de dibujo de nodo DefaultTreeCellRenderer cellRenderer = (DefaultTreeCellRenderer)tree.getCellRenderer() //Establecer la fuente cellRenderer.setFont(new Font("Serif",Font.PLAIN,14)); .setBackgroundNonSelectionColor(Color.blanco); cellRenderer.setBackgroundSelectionColor(Color.amarillo); cellRenderer.setBorderSelectionColor(Color.red); //Establece el color cambiante del texto cuando está seleccionado o no cellRenderer.setTextNonSelectionColor(Color.black); //Agrega el objeto de árbol al panel de contenido container.add(new JScrollPane(tree)); //Crear etiqueta etiqueta = new JLabel("El nodo que está seleccionando actualmente es:",JLabel.CENTER; label.setFont(new Font("Serif",Font.PLAIN,14)); BorderLayout .SOUTH); setVisible(true); //Establecer visible setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // Maneja el evento TreeSelectionEvent public void valueChanged(TreeSelectionEvent event) { JTree tree = (JTree)event.getSource(); //Obtiene el nodo actualmente seleccionado DefaultMutableTreeNode SelectionNode = (DefaultMutableTreeNode)tree.getLastSelectedPathComponent(); toString (); label.setText("El nodo que estás seleccionando actualmente es: "+nombrenodo); } public static void main(String args[]) { Árbol d = nuevo árbol(); } }
El menú de árbol creado en este artículo según niveles y modelos es similar a crear una barra de menú. Me pregunto si tus amigos lo dominan.