Una clase JTree permite mostrar datos de una forma jerárquica y en realidad este objeto no contiene sus datos; es decir, simplemente proporciona una vista hacia los datos consultando su modelo de datos.
A continuación se muestra como usar etiquetas HTML en un objeto Jtree para formatear los datos que este muestra. Para ser exactos, se debe personalizar la clase DefaultTreeCellRenderer extendiendo la misma para que la propiedad text acepte etiquetas HTML.
Paso 1.
Crea un proyecto Java Application en Netbeans con el nombre de «JTree Example«. Agregar las clases:
Paso 2. Clase estudiante
Creamos una clase para contener la información que se vera en el JTree
package org.example; /** * @see https://www.jc-mouse.net/ * @author mouse */ public class Student { private String name; private String mail; public Student(String name, String mail) { this.name = name; this.mail = mail; } public Student() { } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getMail() { return mail; } public void setMail(String mail) { this.mail = mail; } }
Paso 3. Personalizar DefaultTreeCellRenderer
En esta clase es donde personalizamos los datos de salida, para este ejemplo, el nombre del estudiante se muestra en negrilla y su correo electronico en cursiva.
package org.example; import java.awt.Component; import javax.swing.JTree; import javax.swing.tree.DefaultMutableTreeNode; import javax.swing.tree.DefaultTreeCellRenderer; /** * @see https://www.jc-mouse.net/ * @author mouse */ public class MyTreeRenderer extends DefaultTreeCellRenderer { private static final String BOLD_FORMAT = "<span style='font-weight: bold;'>%s</span>"; private static final String ITALIC_STYLE = "<span style='font-style: italic;'>%s</span>"; @Override public Component getTreeCellRendererComponent(JTree tree, Object value, boolean sel, boolean expanded, boolean leaf, int row, boolean hasFocus) { super.getTreeCellRendererComponent(tree, value, sel, expanded, leaf, row, hasFocus); DefaultMutableTreeNode node = (DefaultMutableTreeNode) value; Object userObject = node.getUserObject(); if (userObject instanceof Student) { Student student = (Student) userObject; String text = String.format(BOLD_FORMAT, student.getName()); text += " " + String.format(ITALIC_STYLE, student.getMail()); this.setText("<html>" + text + "</html>"); } return this; } }
Paso 4. Probando
Agregamos algunos datos en un Jtree y le asignamos nuestro renderer creado en el paso 3.
package org.example; import java.awt.Dimension; import javax.swing.JFrame; import javax.swing.JScrollPane; import javax.swing.JTree; import javax.swing.tree.DefaultMutableTreeNode; /** * @see https://www.jc-mouse.net/ * @author mouse */ public class Main { /** * @param args the command line arguments */ public static void main(String[] args) { DefaultMutableTreeNode root = new DefaultMutableTreeNode("Curso"); DefaultMutableTreeNode student1 = new DefaultMutableTreeNode( new Student("Andres Trozado","andres_ito@mail.com") ); DefaultMutableTreeNode student2 = new DefaultMutableTreeNode( new Student("Lola Mento","runlola@mail.com") ); DefaultMutableTreeNode student3 = new DefaultMutableTreeNode( new Student("Elena Nito","xelchikito@mail.com") ); DefaultMutableTreeNode student4 = new DefaultMutableTreeNode( new Student("Victor Tilla","viktor33@mail.com") ); DefaultMutableTreeNode student5 = new DefaultMutableTreeNode( new Student("Paca Garte","del2@mail.com") ); DefaultMutableTreeNode student6 = new DefaultMutableTreeNode( new Student("Estela Gartija","lagarto4ever@mail.com") ); root.add(student1); root.add(student2); root.add(student3); root.add(student4); root.add(student5); root.add(student6); JTree jtree = new JTree(root); jtree.setCellRenderer(new MyTreeRenderer()); JFrame frame = createFrame(); frame.add(new JScrollPane(jtree)); frame.setLocationRelativeTo(null); frame.setVisible(true); } private static JFrame createFrame() { JFrame frame = new JFrame("JTree Example"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setSize(new Dimension(400, 400)); return frame; } }
Ejecutamos el proyecto y tenemos:
enjoy!
Yo soy yo :) JC Mouse, Soy orgullosamente boliviano soy fundador y CEO de la web jc-Mouse.net uno de las pocas web en emprendimiento y tecnología en Bolivia.
Toda la información que encuentres en este sitio es y sera completamente gratis siempre, puedes copiar, descargar y re-publicar si así lo deseas en otros blogs o sitios web, solo te pido a cambio que dejes una referencia a esta web. Esto nos ayuda a crecer y seguir aportando. Bye
Enjoy! :)
Hace tiempo pidieron un video tutorial sobre como crear sus propios componentes swing java, lamentablemente debo decir q...
Apache POI es la API de Java para el trabajo con archivos de Microsoft como son Word, Excel y Power Point. Apache POI se...
Si te gusta realizar tus propios memes o foto montajes pero tienes poca o nula experiencia en editores gráficos como Pho...
En esta ocasión aprenderemos a conectaros con una base de datos Oracle desde Laravel. Es un tutorial sencillo y cortito,...
«Mouse Responde…» simula ser un alma en pena que responde cualquier pregunta que le hagan, al estilo del juego de...
Para terminar el tutorial, debemos unir tanto la VISTA como el MODELO y para eso esta el CONTROLADOR. o.O El controlador...
WhatsApp anuncio a través de su blog que ya se encuentra disponible la función de envío de fotos y videos TEMPORALES, es...
Muchas de las innovaciones computacionales de la NASA se desarrollaron para ayudar a explorar el espacio, pero ahora la...
TikTok es una plataforma de microvideos muy popular entre los jóvenes el cual cuenta ya con millones de videos cortps de...
Una clase JTree permite mostrar datos de una forma jerárquica y en realidad este objeto no contiene sus datos; es decir,...