Sigueme en Facebook Sigueme en Twitter Sigueme en Instagram Sigueme en Youtube
JC Mouse Bolivia
Index / Java / Personalizar nodos de un JTree con HTML

Personalizar nodos de un JTree con HTML

Autor jc mouse jueves, junio 17, 2021

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.

arbol en java

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:

  1. Main.java
  2. MyTreeRenderer.java
  3. Student.java

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:

html en java swing

enjoy!

Tags

Si te ha gustado podrías compartirlo o dejar un comentario. ¡Muchas gracias!
Autor: JC Mouse

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! :)

También Te Podría Interesar

Como paginar registros en Java/Access

Como paginar registros en Java/Access

En este post veremos una forma de realizar la paginación en una base de datos Access utilizando el lenguaje de programac...

base de datos multiple – parte II

base de datos multiple – parte II

Continuación del tutorial «Utiliza 2 bases de datos diferentes en una aplicación» La Interfaz frmSelected.java: Haciendo...

Proyecto Ascii Art (metodo de Black/white)

Proyecto Ascii Art (metodo de Black/white)

El Ascii Art o Arte Ascii, consiste en realizar dibujos con los caracteres ASCII (Código Americano Estándar de Intercamb...

Ejecutar JAR con parámetros de entrada

Ejecutar JAR con parámetros de entrada

Java nos permite pasar parámetros a una aplicación empaquetada en un *.JAR mediante el MAIN de nuestro programa, pero cl...

Método de la Regla Falsa o Regula Falsi

Método de la Regla Falsa o Regula Falsi

Este método, también conocido como método de interpolación lineal, es un método iterativo de resolución numérica de ecua...

TextInput – Material Design

TextInput – Material Design

TextInput es una caja de texto que implementa el estilo de Material Design popular en dispositivos móviles, pero este sw...

Comparte lo que sabes

Categorias

Últimas entradas

Si trabajas con redes sociales (RRSS) a continuación te muestro tres herramintas gratuitas que te ayudaran a la hora de...

Por lo general se usan transacciones a nivel base de datos y posteriormente se llaman estos a través de procedimientos a...

En este post, aprenderemos como conectar Visual Basic 6 con SQL Server, abrir una tabla, leer su contenido y mostrar est...

Lo que veremos en este post es la configuración del driver para PHP de SQL Server que ha creado Microsoft el cual permit...

Herramientas

Generador de Enlaces a Whatsapp