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);
Read More

Evento del boton cerrar de las ventanas

Muchas veces queremos controlar la accion del boton cerrar que se encuentra junto con los botonces de minimizar y maximizar en la barra de titulo, este funcionamiento muchas veces es muy util, sobretodo cuando estn en juego algunos cambios en las ediciones dentro de la aplicacion o porque queremos estar atentos a las acciones del usuario.

Ya sea un JFrame,  JPanel, JDialog, o componentes de ventanas solo deben crear una windows listener, por ejmplo, lo podemos hacer en el constructor, quedaria algo como esto:


setDefaultCloseOperation (WindowConstants.DO_NOTHING_ON_CLOSE);

addWindowListener(new WindowAdapter(){
	public void windowClosing(WindowEvent we){
		int eleccion = JOptionPane.showConfirmDialog(null, "Desea salir?");
		if ( eleccion == 0) {
			JOptionPane.showMessageDialog(null, "saliendo del sistema...");
			System.exit(0);
		}
	}
});

La linea 5 muestra un mensaje diciendole al usuario si realmente deser avandonar la aplicacion luego de que este presiono el boton cerrar

En la linea 6 se hace la comparacion si el usuario selecciono la opcion de “si” cuando se mostro la ventana de confimacion

En la linea 7 se le despliego un nuevo mensaje diciendole adios

En la linea 8 se cierra la aplicacion por completo

Read More