Html en componentes Swing

Muchos componentes Swing (javax.swing) despliguen texto un simple texto, uniforme y sencillo con solo usar con solo determinar las dos propiedades de SetFont y setForeground de un componente determinado. Por ejemplo:

label = new JLabel("Un JLabel");
label.setFont(new Font("Serif", Font.PLAIN, 14));
label.setForeground(new Color(0xffffdd));

Pero si queremos combinar estilos de letras y multiples colores en una sola linea o dar un formato mas enriquecido podemos usar HTML. El formato HTML puede ser usado en JButton, JMenu, JMenuItem, JLabel, ToolTipText, y JTabPane, además con ayuda de un JLabel en el render pueden ser usados en un JTree y un JTable

Para usar formato HTML en un componente debemos poner la etiqueta < html > al principio del texto, seguidamente ponemos texto en formato HTML. Acá un ejemplo de HTML en un JButton:

button = new JButton("<html><b><u>D</u>os</b><br>lineas</html>");

Ejemplo practico

El siguientes ejemplo tiene como fin recibir código HTML y que por otro lado este código sea desplegado en formato HTML. Las fuentes del ejemplo la puedes ver en HtmlDemo.java

Algunas observaciones:
• Ponga código HTML en el área en blanco y luego precionar el botón de abajo
• Quitar la etiqueta < html > del principio del texto para que el código HTML no sea parceado

BotonHTMLDemo

Ahora un ejemplo de tres botones (JButton) aplicando diferentes estilos de fuentes y colores, también se hace el uso de imágenes. El código del ejemplo lo puedes ver en el archivo BotonHtmlDemo.java. Acá un ejemplo de como quedaría:

El botón de la izquierda y derecha usa diferentes tipos de formato y colores y también implementa HTML. El botón del centro usa una sola línea y no usa HTML.

Acá podemos ver el código que especifica el formato de los tres botones:

b1 = new JButton("<html><center><b><u>D</u>esabilitado</b><br>"
                         + "<font color=#ffffdd>boton central</font>",
                         iconoBotonIzquierdo);
Font font = b1.getFont().deriveFont(Font.PLAIN);
b1.setFont(font);
b1.setVerticalTextPosition(AbstractButton.CENTER);
b1.setHorizontalTextPosition(AbstractButton.LEADING);
b1.setMnemonic(KeyEvent.VK_D);
b1.setActionCommand("disable");

b2 = new JButton("middle button", iconoBotonCentral);
b2.setFont(font);
b2.setForeground(new Color(0xffffdd));
b2.setVerticalTextPosition(AbstractButton.BOTTOM);
b2.setHorizontalTextPosition(AbstractButton.CENTER);
b2.setMnemonic(KeyEvent.VK_M);

b3 = new JButton("<html><center><b><u>H</u>abilitado</b><br>"
                         + "<font color=#ffffdd>boton central</font>",
                         iconoBotonDerecho);
b3.setFont(font);

Leave a Reply