Uso básico de elementos Swing con NetBeans – 12 – Uso básico de JTextPane y JPanel, visualizar texto con estilo y objetos.

Utilización de JTextPane en Java

En esta guía podremos ver la utilización de “JTextPane” o Panel de Texto. Este es un componente al cual se le puede aplicar estilos de texto además de agregar otros componentes como botones o imágenes como ya veremos.
Diseñamos un formulario utilizando un JFrame (Nombre del formulario UsoJTextPane). Como se ve en la imagen, agregamos un JPanel al cual le especificamos un borde con texto, esto se consigue modificando la propiedad “border” e indicando que sea “Borde con título”; dentro del JPanel agregamos nuestro JTextPane. En la imagen siguiente vemos el diseño de nuestro formulario, cada elemento tiene un nombre de variable como se especifica en la imagen, tomar en cuenta este punto ya que es necesario para referenciar los objetos. Se puede cambiar el “Nombre de variable” de cada objeto haciendo clic derecho sobre la misma y clic en “Cambiar nombre de variable…”. (clic sobre la imagen para ampliar)
Para este proyecto creamos tres métodos específicos, la primera que arrancará al crear el formulario y pondrá en marcha los demás métodos, el segundo maneja los estilos que utilizaremos y el último se utilizar para cargar imágenes desde archivos.
Código Java
    //Método que se ejecuta al crear el formulario
private void inicio(){
//Array de String para muestras de estilo.
String[] textos = {"Codigo Java - (Texto Normal)." + "\n",
"Utilizando Swing - (Texto Cursiva)." + "\n",
"Programando con Java - (Texto Negrita)" + "\n",
"Utilizando JTextPane - (Texto pequeño)" + "\n",
"Utilizando Style. (Texto grande)" + "\n",
"JTextPane con soporte para insertar objetos." + "\n",
" " + "\n",
"Soporte insertar iconos." + "\n",
" " + "\n",
"JTextPane permite utilizar StyledEditorKit y StyledDocument, " +
"también interactua con diferentes objetos."
};
//Array de String para el nombre de cada estilo "Style"
String[] iniText = {
"normal","cursiva","negrita","peque","grande","boton","normal","icono","normal","normal"
};
//Cramos una variable tipo StyledDocument que manejara los estilos.
StyledDocument sd = jtp.getStyledDocument();
//Método que se crea más abajo, le pasamos como argumento nuestro StyledDocument.
styleDoc(sd);
//Control de errores
try {
//Método insertString(int offset, String str, AttributeSet a)
//Primer argumento - Posición de inserción. Segundo - String que se va insertar.
//Atributo asociado al String ingresado. En este caso los estilos.
for (int i = 0; i < iniText.length; i++) {
sd.insertString(sd.getLength(), textos[i], sd.getStyle(iniText[i]));
}
} catch (Exception e) {
System.err.println("error " + e);
}
}
//Inicialización de los diferentes estilos a utilizar.
//Hay diferentes propiedades, pero fáciles de entender.
private void styleDoc(StyledDocument sd){
Style def = StyleContext.getDefaultStyleContext().
getStyle(StyleContext.DEFAULT_STYLE);

Style nm = sd.addStyle("normal", def);
StyleConstants.setFontFamily(def, "SansSerif");

Style s = sd.addStyle("cursiva", nm);
StyleConstants.setItalic(s, true);

s = sd.addStyle("negrita", nm);
StyleConstants.setBold(s, true);

s = sd.addStyle("peque", nm);
StyleConstants.setFontSize(s, 10);

s = sd.addStyle("grande", nm);
StyleConstants.setFontSize(s, 16);

s = sd.addStyle("icono", nm);
//Tomar en cuentra la imagen que utilizaremos y su ubicación
StyleConstants.setAlignment(s, StyleConstants.ALIGN_CENTER);
ImageIcon compu = createImageIcon("/com/swing/basic/img/Computer.png",
"Icono PNG - Coputadora");
if (compu != null) {
StyleConstants.setIcon(s, compu);
}
//Icono para nuestro botón
s = sd.addStyle("boton", nm);
StyleConstants.setAlignment(s, StyleConstants.ALIGN_CENTER);
ImageIcon searchIcon = createImageIcon("/com/swing/basic/img/Search.png",
"Icono de búsqueda");
JButton button = new JButton("Buscar");
if (searchIcon != null) {
button.setIcon(searchIcon);
} else {
button.setText("Search");
}
button.setCursor(Cursor.getDefaultCursor());
button.setMargin(new Insets(0,0,0,0));
StyleConstants.setComponent(s, button);
}

//Método que nos permitira cargar una imagen como icono pasándole una url
protected static ImageIcon createImageIcon(String path,String des) {
java.net.URL imgURL = UsoJRadioButton.class.getResource(path);
if (imgURL != null) {
return new ImageIcon(imgURL);
} else {
System.err.println("Archivo no encontrado: " + path);
return null;
}
}
En la imagen siguiente vemos las importaciones que necesitamos, nuestro paquete si la utilizamos y el método que llámanos desde el constructor.
Lista de Importaciones.
Código Java
import java.awt.Cursor;
import java.awt.Insets;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.text.Style;//Importaciones necesarias
import javax.swing.text.StyleConstants;
import javax.swing.text.StyleContext;
import javax.swing.text.StyledDocument;
En este caso no utilizaremos eventos, por tanto ya podremos ejecutar el formulario creado. (Por si hay alguna duda en el proceso, debemos hacer clic derecho sobre nuestro archivo fuente y presionar “ejecutar archivo” ya que nuestro proyecto no tiene una clase principal definida)

1 comentario :