Uso básico de elementos Swing con NetBeans – 31 – Uso de JTabbedPane, divisor de paneles.

Uso del elemento JTabbedPane en Java

JTabbedPane es un elemento útil a la hora de dividir múltiples paneles en pestañas, lo cual permite incluir multitud de funcionalidades en un solo formulario, permitiendo compactarlas en paneles independientes y de fácil navegación. Para este ejemplo utilizaremos un JTabbedPane a la cual le incluiremos tres JPanel, cada una indicará una pestaña funcional por si sola. A cada JPanel le agregaremos un JScrollPane para ajustar el redimensionado y dentro de esta última un JLabel la cual utilizando ejemplos anteriores le agregaremos una imagen. Como se ver en el diseño más abajo, los ajustes básicos la hacemos en modo código, por tanto basta con agregar de forma correcta cada elemento.

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

import javax.swing.ImageIcon;//Importación

/**
*
* @author Ariel
*/

public class UsoJTabbedPane extends javax.swing.JFrame {

/**
* Creates new form UsoJTabbedPane
*/

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

Como es habitual utilizamos un método privado que arrancará junto con el formulario al llamarla desde el constructor, esto nos permitirá inicializar las propiedades necesarias de cada objeto del formulario. Se especifican con comentarios la funcionalidad de cada línea de código. Para este ejemplo no se aplican los eventos.

Código Java
    private void inicio(){
//Configuramos el primer tabbed, el primer parámetro indica el índice.
jTabb.setTitleAt(0, "Primer Panel");
jTabb.setIconAt(0, createImageIcon("/com/swing/basic/img/Search.png"));
jTabb.setToolTipTextAt(0, "Esta es la primera pestaña");
//Agregamos el icono al label
jLab01.setText(null);
//Depende de como tengamos oragnizado los paquetes para ubicar las imagenes
jLab01.setIcon(createImageIcon("/com/swing/basic/img/aqua.png"));

//Configuramos el segundo tabbed, el primer parámetro indica el índice.
jTabb.setTitleAt(1, "Segundo Panel");
jTabb.setIconAt(1, createImageIcon("/com/swing/basic/img/clients.png"));
jTabb.setToolTipTextAt(1, "Esta es la segunda pestaña");
jLab02.setText(null);
jLab02.setIcon(createImageIcon("/com/swing/basic/img/kirito.png"));

//Configuramos el tercer tabbed, el primer parámetro indica el índice.
jTabb.setTitleAt(2, "Tercer Panel");
jTabb.setIconAt(2, createImageIcon("/com/swing/basic/img/load.png"));
jTabb.setToolTipTextAt(2, "Esta es la tercera pestaña");
jLab03.setText(null);
jLab03.setIcon(createImageIcon("/com/swing/basic/img/paisaje.png"));
}
//Método que nos permitirá cargar una imagen como icono pasándole una url
private static ImageIcon createImageIcon(String path) {
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;
}
}

Ahora sí, podemos ejecutar 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)

Uso básico de elementos Swing con NetBeans – 30 – Uso de JSplitPane, divisor de elementos.

Trabajando con JSplitPane desde Java

El JSplitPane es un elemento muy útil que nos permite dividir objetos distintos en uno o varios paneles redimensionables. En este ejemplo agregamos una Lista de nombres de imágenes PNG, que se cargarán al seleccionarlas con un clic y que se mostraran en un Label, como se ve en el diseño el JSplitPane muestra la lista en la parte izquierda y al label en la parte derecha en el medio el divisor redimensionable. Como vemos en el diseño también necesitamos dos JScrollPane, que se puede agregar arrastrando y soltando en el punto específico, la misma forma el elemento que la utilizan se arrastra y suelta en su interior. Es más fácil mover elementos de un lugar a otro utilizando el “Navegador” como se muestra en la imagen más abajo.

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
import javax.swing.DefaultListModel;
import javax.swing.ImageIcon;//Importaciones

/**
*
* @author Ariel
*/

public class UsoJSplitPane extends javax.swing.JFrame {

/**
* Creates new form UsoJSplitPane
*/

public UsoJSplitPane() {
initComponents();
setLocationRelativeTo(null);//Centrar formulario
inicio();//Método de arranque
}
private DefaultListModel modelList;//Variable de clase.

Para el ejemplo utilizamos varios métodos que cumplen funciones específicas, la principal es “inicio” que nos permitirá inicializar la lista y configurar ciertas propiedades de cada elemento del diseño. Las propiedades de objetos se pueden editar en modo diseño, pero es más fácil entender cómo funcionan al hacerla en modo código.

Código Java
    private void inicio(){
//Incluye las fechitas de expanción rápida al JSplitPane
jSp.setOneTouchExpandable(true);
//Localización de divisor
jSp.setDividerLocation(150);
//Array de String con los nombres de archivos PNG que utilizaremos
//Cada uno puede hacer su propia lista.
String[] img = {"paisaje","bosque","kirito","Delete","Login","New","Save","Select","load","note","package",
"print","userr","aqua"};
//DefaultListModel para el JList
modelList = new DefaultListModel();
//Agregamos el array de String a la lista
for (String string : img) {
modelList.addElement(string);
}
//Específicamos el DefaultListModel para nuestro JList
jLt.setModel(modelList);
//Indicamos que el JLabel no muestre texto
jLb.setText(null);

/**
Imagen tipo JPG para indicar una imagen incial al JLabel
El resto de las imagenes utilizada son PNG
Las imagenes debemos de tenerlas en un paquete dentro del mismo proyecto...
O dentro del mismo paquete que nuestro JFrame, en tal caso solo indicamos el nombre y la extensión,
Caso contrario debemos de indicar toda la ruta...
* */

jLb.setIcon(createImageIcon("/com/swing/basic/img/" + "acercaFond" + ".jpg"));
}
//Método para actualizar la imagenes mostradas en el JLabel
private void actualizar(){
imageLabel(jLt.getSelectedValue().toString());
}
//Método que requiere como parámetro el nombre del la imagen para mostrar
private void imageLabel(String nombre){
jLb.setIcon(createImageIcon("/com/swing/basic/img/" + nombre + ".png"));
}

//Método que nos permitira cargar una imagen como icono pasándole una url
private static ImageIcon createImageIcon(String path) {
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 este ejemplo el único elemento que maneja eventos es la lista, la cual utiliza el MouseClicked. En las primeras guías de la serie vimos cómo se implementan los eventos desde el entorno de diseño, si hay dudas se pueden consultar esas entradas.

Código Java
    private void jLtMouseClicked(java.awt.event.MouseEvent evt) {                                 
actualizar();
}

Ahora sí, podemos ejecutar 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) (clic sobre la imagen para ampliar)

Uso básico de elementos Swing con NetBeans – 29 – Uso de Spinners, ejemplo 2.

Uso básico de Spinners en Java

Para este ejemplo utilizamos dos JSpinner, una para indicar fecha y otra para hora. Aparte de las etiquetas no se utiliza otro elemento, el diseño es bastante sencillo. El proceso es similar al ejemplo uno, se especifica el funcionamiento de cada línea de código con comentarios.

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
import java.util.Calendar;
import java.util.Date;
import javax.swing.JSpinner;//Importaciones
import javax.swing.SpinnerDateModel;
import javax.swing.SpinnerModel;

/**
*
* @author Ariel
*/

public class UsoSpinnerDos extends javax.swing.JFrame {

/**
* Creates new form UsoJSliderDos
*/

public UsoSpinnerDos() {
initComponents();
setLocationRelativeTo(null);//Centrar formulario
inicio();//Método de arranque
}
Calendar calendar = Calendar.getInstance();//Variable de Objeto Calendar

Para este ejemplo requerimos de un solo método privado, que se iniciará desde el constructor del JFrame y permitirá inicializar los spinners. Se especifica el funcionamiento de cada línea de código utilizando comentarios. No se requieren eventos para este ejemplo.

Código Java
    private void inicio(){
//Obtenemos una fecha de inicio, será la fecha actual del sistema
Date inicio = calendar.getTime();
//Indicamos año hasta -100 del actual
calendar.add(Calendar.YEAR, -100);
//Guardamos la configuración en un DATE
Date fechaAnterior = calendar.getTime();
//Indicamos año hasta +200 del actual
calendar.add(Calendar.YEAR, 200);
//Guardamos la configuración en un DATE
Date fechaPosterior = calendar.getTime();
//Usamos el contructor de abajo para crear un modelo para el Spinner
//SpinnerDateModel(Date value, Comparable start, Comparable end, int calendarField)
//Utilizamos los datos que creamos más arriba
//Para fecha utilizamos Calendar.YEAR y para hora Calendar.HOUR, el resto puede ser igual
SpinnerModel fechaModel = new SpinnerDateModel(inicio, fechaAnterior, fechaPosterior, Calendar.YEAR);
SpinnerModel horaModel = new SpinnerDateModel(inicio, fechaAnterior, fechaPosterior, Calendar.HOUR);
//Indicamos el model para cada Spinner además del formato de fecha y hora según corresponda.
fecha.setModel(fechaModel);
fecha.setEditor(new JSpinner.DateEditor(fecha, "dd/MM/yyyy"));
hora.setModel(horaModel);
hora.setEditor(new JSpinner.DateEditor(hora, "HH:mm:ss"));
}

Ahora sí, podemos ejecutar 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) (clic sobre la imagen para ampliar)

Uso básico de elementos Swing con NetBeans – 28 – Uso de Spinners, lista de elementos.

Trabajando con Spinners desde Java.

En esta oportunidad pondremos en funcionamiento tres Spinnes, que contendrán una lista de días meses y años respectivamente. Como sabemos un spinner puede contener diferentes tipos de elementos sean estas numéricas o no. Para el ejemplo agregaremos tres Spinnes que contendrán cada uno un modelo específico de elementos que se contendrán en Arrays y enteros. Dependiendo del caso se pueden utilizar SpinnerListModel o SpinnerNumberModel.

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
import java.util.Calendar;
import javax.swing.SpinnerListModel;
import javax.swing.SpinnerModel;//Importaciones
import javax.swing.SpinnerNumberModel;

/**
*
* @author Ariel
*/

public class UsoSpinner extends javax.swing.JFrame {

/**
* Creates new form UsoSpinner
*/

public UsoSpinner() {
initComponents();
setLocationRelativeTo(null);//Centrar Formulario
inicio();
}
Calendar calendar = Calendar.getInstance();//Variable de Objeto Calendar

Para este ejemplo requerimos de un solo método privado, que se iniciará desde el constructor del JFrame y permitirá inicializar los spinners. Se especifica el funcionamiento de cada línea de código utilizando comentarios. No se requieren eventos para este ejemplo.

Código Java
    private void inicio(){
//Array de String para los días y meses
String[] d = {"Domingo","Lunes","Martes","Miércoles","Jueves","Viernes","Sábado"};
//El array mes puede contener un registro vacío, se puede corregir con un pequeño ajuste...
String[] mes = new java.text.DateFormatSymbols().getMonths();
//Tipo entero para año
int an = calendar.get(Calendar.YEAR);

//Especificando modelos para cada Spinner
SpinnerListModel modelDias = new SpinnerListModel(d);
SpinnerListModel modelMes = new SpinnerListModel(mes);
//Parámetro numéricos
//public SpinnerNumberModel(int value, int minimum, int maximum, int stepSize)
//Valor inicial - valor mínimo - valor máximo - incremento a 1
SpinnerModel modelAnyo = new SpinnerNumberModel(an, an - 100, an + 100, 1);
//Agregamos el modelo a cada Spinner
dias.setModel(modelDias);
meses.setModel(modelMes);
anyos.setModel(modelAnyo);
}

Llegado a esta parte podremos ejecutar 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) (clic sobre la imagen para ampliar)