Uso básico de elementos Swing con NetBeans – 34 – Uso de JTextArea, cambio de fuente y tamaño de fuente.

Ampliando el ejemplo anterior, veremos cómo obtener la lista de fuentes del sistema y aplicarlas a nuestro Área de Texto, también veremos cómo ajustar el tamaño de fuentes. El resto es totalmente igual al del ejemplo anterior. Para mostrar la lista de fuentes y tamaño de fuente utilizamos combos. Es necesario limpiar los ítems del “model” en modo diseño.

El nombre que le demos al formulario es a criterio de cada uno. Tomar en cuenta los nombres de variable de cada objeto, se especifican los nombres en el diseño. Esto es muy importante ya que desde los métodos se utilizan estos nombres para referencia a cada objeto. 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)

Lista de importaciones que necesitamos para trabajar con ciertos objetos. Además los métodos llamados desde el constructor del JFrame.

Código Java
package com.swing.basic;//Paquete de fuente

import java.awt.Font;//Importación
import java.awt.GraphicsEnvironment;

/**
*
* @author Ariel
*/

public class EjJTextArea extends javax.swing.JFrame {

/**
* Creates new form EjJTextArea
*/

public EjJTextArea() {
initComponents();
setLocationRelativeTo(null);//Centrar formulario
inicio();//Método de inicio
}

Para el ejemplo utilizamos varios métodos que cumplen funciones específicas. El nombre que le damos a cada método nos da una idea de que función cumple. El método “inicio()” por ejemplo arranca desde el constructor del JFrame y nos permite inicializar algunas propiedades del área de texto. Se agregan comentarios para indicar la funciona de cada línea de código.

Código Java
    private void inicio(){
//-Establecemos propiedades para el JTextArea-
//Establecemos tipo de fuente predeterminado, texto itálico, tamaño 15
jTex.setFont(new Font("Default", Font.PLAIN, 15));
//Especificamos que el texto se ajusta al tamaño del Área de texto
jTex.setLineWrap(true);
jTex.setWrapStyleWord(true);
//Hacemos que el área de texto no sea editable
jTex.setEditable(false);

//Configuramos la lista de tipo de fuentes y tamaño
//Obtenemos la lista de fuentes del sistema utilizando getAvailableFontFamilyNames()
GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
String[] fonts = ge.getAvailableFontFamilyNames();

//Agregamos cada nombre de fuente a nuestro combo.
for (String string : fonts) {
fuenteTipo.addItem(string);
}

//Agregamos los tamaños de fuente, de 1 al 70
for (int i = 1; i < 71; i++) {
fuenteTam.addItem(i);
}

//Inicializamos el tamaño de fuente en 15.
fuenteTam.setSelectedIndex(14);
}

//Método para agregar texto al área de texto.
private void agregar(){
//Verificamos que el campo de texto no este vacío
if(!jT.getText().isEmpty()){
//Para agregar textos se utiliza append. "\n" indica salto de línea.
jTex.append(jT.getText() + "\n");
//Limpiamos el campo JTextField.
jT.setText(null);
}
}

//Método para manejar los cambios de fuente y tamaño
private void tipoFuente(){
//Obtenemos tipo y tamaño.
String toString = fuenteTipo.getSelectedItem().toString();
int selectedIndex = fuenteTam.getSelectedIndex() + 1;
jTex.setFont(new Font(toString, Font.PLAIN, selectedIndex));
}
}

En relación a los eventos, tanto para el botón agregar como en los dos combos utilizaremos el “ActionPerformed” que permitirá ejecutar los métodos. En las primeras guías de la serie vimos cómo se hacer para relacionar un evento con un objeto visual.

Código Java
    private void agregarActionPerformed(java.awt.event.ActionEvent evt) {                                        
agregar();
}

private void fuenteTipoActionPerformed(java.awt.event.ActionEvent evt) {
tipoFuente();
}

private void fuenteTamActionPerformed(java.awt.event.ActionEvent evt) {
tipoFuente();
}

Llegado a este punto podremos ejecutar y probar nuestro formulario. (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)

No hay comentarios :

Publicar un comentario en la entrada