JTagua

Inicio » Swing

Archivo de la categoría: Swing

Swing 13: JCheckBox

Vamos a tratar ahora el componente JCheckBox.

Este componente (casilla de activación en la paleta Swing) se utiliza frecuentemente como botón de estado. Proporciona información del tipo o No (true o false),  el argumento es de tipo booleano: verdadero (true) si la caja está seleccionada y falso (false) en otro caso.

EJERCICIO1:

Vamos a realizar un sencillo y simpático ejercicio. Se trata de una imagen del rostro de un muñeco que puede presentar ninguna, todas, una, dos, tres o cuatro características que son: Barbilla, Gafas, Pelo y Dientes. Es decir:

Obviamente, la presentación de uno u otro atributo o elemento dependerá de que esté activa o no cualquiera de las 4 cajas de verificación que incluirá el problema.

(más…)

Swing 02: JFrame.

Toda aplicación Swing tiene que tener un contenedor que contenga la aplicación.

Una opción válida sería el componente JFrame, éste proporciona la ventana principal de la interfaz de la aplicación. Por otro lado, desde el lanzamiento o creación de este componente y su posterior visualización, podremos crear y visualizar otros controles Swing que permitan a la interfaz interaccionar con el usuario, tales como cajas de texto, botones, marcos, cajas de comprobación, botones radiales, etc…

Vamos a retomar el ejemplo que iniciamos en la lección anterior, es decir ejava0, Con el botón derecho en el paquete ejava0 hacemos click en añadir “Formulario JFrame” y aparecerá el siguiente cuadro de diálogo:

(más…)

Swing 01: Introducción y main.

Para realizar los ejercicios de este tutorial, se prejuzga que tiene instalado tanto  JDK como NetBeans. La forma de descargar ambos productos está descrita (en windows y en Linux) en otras entradas de este blog.

En mi caso concreto, actualmente tengo instalada las últimas versiones obtenidas desde la página de descarga de NetBeans , donde he seleccionado el lenguaje Español y la tecnología “All”. (última columna).

(más…)

JTextField

Para realizar un estudio riguroso y detallado del Componente JTextField, lo mejor sería visitar la dirección de Sun Microsystem siguiente

http://java.sun.com/j2se/1.4.2/docs/api/javax/swing/JTextField.html

y además consultar el tutorial

http://java.sun.com/docs/books/tutorial/uiswing/TOC.html

Veremos aquí una descripción simple de dicho componente analizando los constructores y las propiedades y métodos mas utilizados.

Descripción:

El componente JTextBox proporciona al usuario la posibilidad de teclear una pequeña cantidad de texto.


Constructores:

JTextField() , JTextField(String), JTextField(String, int), JTextField(int), JTextField(Document, String, int)
Cada uno de los métodos anteriores permiten inicializar un objeto del tipo JTextBox. El argumento int determina el número de columnas. El argumento String fija el valor inicial del campo.

JCheckBox

Para realizar un estudio riguroso y detallado del Componente JCheckBox, le recomiendo que visite la dirección de Sun Microsystem siguiente

http://java.sun.com/j2se/1.4.2/docs/api/javax/swing/JCheckBox.html

y además consulte el tutorial http://java.sun.com/docs/books/tutorial/uiswing/TOC.html

Veremos aquí una descripción simple de dicho componente analizando los constructores, las propiedades y métodos mas utilizados.

Descripción:

El componente JCheckBox es similar al componente JRadioButton, sin embargo no tiene la limitación de que sólo uno de entre un grupo de ellos tiene que estar seleccionado.

(Descargar el programa ejemplo desarrollado en Netbeans 6.0.1 aquí).
Constructores:

JCheckBox(String) , JCheckBox(String, boolean), JCheckBox(Icon) , JCheckBox(Icon, boolean),
JCheckBox(String, Icon) , JCheckBox(String, Icon, boolean), JCheckBox() .

Cada uno de los métodos anteriores puede instanciar un 0bjeto del tipo JCheckBox. El argumento string específica el texto, si existe, que mostrará el CheckBox. De forma similar, el argumento Icon específica la imagen que debería utilizarse en vez de la imagen por defecto del aspecto y comportamiento. Especificando el argumento booleano como true se inicializa el checkbox como seleccionado. Si el argumento booleano no existe o es false, el checkbox aparecerá inicialmente desactivado.

En el ejemplo anterior el primer componente JCheckBox ha sido creado con la instrucción

jCheckBox1 = new javax.swing.JCheckBox();
Propiedades:

action : Se utiliza para fijar un procedimiento común a varios componentes.

background: Se utiliza para establecer el color del fondo del CheckBox.

buttonGroup: Se utiliza para agrupar varios CheckBox

componentPopupMenu: Se utiliza para asignar un menu Popup al CheckBox.

font: Se utiliza para fijar el font del texto del CheckBox.

foreground: Se utiliza para establecer el color del texto del CheckBox.

model: Se utiliza para obtener el estado del CheckBox.

mnemonic: Se utiliza para fijar una tecla rápida (Alt + Letra) o atajo de teclado del CheckBox.

selected: Se utiliza para seleccionar o deseleccionar el CheckBox.

text: Se utiliza para establecer el texto del CheckBox.

toolTipText: Se utiliza para fijar el texto de la caja de sugerencias del CheckBox.

Otras Propiedades:

Métodos:

JButton

Para realizar un estudio riguroso y detallado del Componente JButton, lo mejor sería visitar la dirección de Sun Microsystem siguiente

http://java.sun.com/j2se/1.4.2/docs/api/javax/swing/JButton.html

y además consultar el tutorial

http://java.sun.com/docs/books/tutorial/uiswing/TOC.html

Veremos aquí una descripción simple de dicho componente analizando los constructores y las propiedades y métodos mas utilizados.

Descripción:

El componente JButton permite al usuario ejecutar una accción o un procedimiento.

Como se muestra en la imagen anterior, un botón Swing puede mostrar tanto texto como una imagen, e incluso ambos. En este último caso el texto puede situarse en cualquier lugar respecto de la imagen. La letra subrayada de cada texto de botón muestra el mnemónico — la tecla alternativa — para cada botón.
(Descargar el programa ejemplo desarrollado en Netbeans 6.0.1 aqui).
Cuando un botón se desactiva, cambia su aspecto. Sin embargo, podríamos proporcionar una imagen para que substituya la imagen normal y de esta manera el botón tendrá una apariencia cuando está activado y otra cuando no lo está.
 
Constructores:

JButton(String, Icon), JButton(String), JButton(Icon), JButton()

Cada uno de los métodos anteriores crea un botón para tener el texto/imagen especificado.

El botón izquierdo del ejemplo anterior ha sido creado mediante la instrucción
bIzq = new javax.swing.JButton();
 
Propiedades:

 

action : Se utiliza para fijar un procedimiento común a varios componentes.

background: Se utiliza para establecer el color del fondo del botón.

componetPopupMenu: Se utiliza para asignar un menu Popup al botón.
 
font: Se utiliza para fijar el font del texto del botón.
 
foreground: Se utiliza para establecer el color del texto del botón.
 
mnemonic: Se utiliza para fijar una tecla rápida (Alt + Letra) o atajo de teclado del botón.
 
text: Se utiliza para establecer el texto del botón.
 
toolTipText: Se utiliza para fijar el texto de la caja de sugerencias del botón.

Otras Propiedades (1/2):

Otras Propiedades (2/2):

Métodos:

void setAction(Action) , Action getAction()

Set or get the button’s properties according to values from the Action instance.

Set or get the text displayed by the button.
Set or get the image displayed by the button when the button isn’t selected or pressed.
Set or get the image displayed by the button when it is disabled. If you do not specify a disabled image, then the look and feel creates one by manipulating the default image.
Set or get the image displayed by the button when it is being pressed.
Set or get the image displayed by the button when it is selected. If you do not specify a disabled selected image, then the look and feel creates one by manipulating the selected image.
Use setRolloverIcon(someIcon) to make the button display the specified icon when the cursor passes over it. The setRolloverSelectedIcon method lets you specify the rollover icon when the button is selected — this is useful for two-state buttons such as toggle buttons. Setting the rollover icon automatically calls setRollover(true), enabling rollover.
Set or get where in the button its contents should be placed. The AbstractButton class allows any one of the following values for horizontal alignment: RIGHT, LEFT, CENTER (the default), LEADING, and TRAILING. For vertical alignment: TOP, CENTER (the default), and BOTTOM.
Set or get where the button’s text should be placed, relative to the button’s image. The AbstractButton class allows any one of the following values for horizontal position: LEFT, CENTER, RIGHT, LEADING, and TRAILING (the default). For vertical position: TOP, CENTER (the default), and BOTTOM.
Set or get the number of pixels between the button’s border and its contents.
Set or get whether the button should look different when it has the focus.
Set or get whether the border of the button should be painted.
Set or get the amount of space between the text and the icon displayed in this button.
Set or get the keyboard alternative to clicking the button. One form of the setMnemonic method accepts a character argument; however, the Swing team recommends that you use an int argument instead, specifying a KeyEvent.VK_X constant.
Set or get a hint as to which character in the text should be decorated to represent the mnemonic. Note that not all look and feels may support this.
Set or get the name of the action performed by the button.
Add or remove an object that listens for action events fired by the button.
Add or remove an object that listens for item events fired by the button.
Set or get whether the button is selected. Makes sense only for buttons that have on/off state, such as check boxes.
Set or get the keyboard alternative to clicking the button. One form of the setMnemonic method accepts a character argument; however, the Swing team recommends that you use an int argument instead, specifying a KeyEvent.VK_X constant.
Set or get a hint as to which character in the text should be decorated to represent the mnemonic. Note that not all look and feels may support this.
Establece/Obtiene el nombre de la acción que ejecutará el botón.
Add or remove an object that listens for action events fired by the button.
Add or remove an object that listens for item events fired by the button.
Para aquellos botones con valores on/off Establece/Obtiene la información si está o no activado.
Ejecuta desde un programa un  “click”. Opcionalmente, int especifica la cantidad de tiempo medido en milisegundos que el botón puede estar presionado.
Establece/Obtiene la cantidad de tiempo medido en milisegundos entre el momento en el que se pulsa el botón y el momento en el que se dispara el evento correspondiente.

JPanel

Para realizar un estudio riguroso y detallado del Componente JPanel, le recomiendo que visite la dirección de Sun Microsystem siguiente

http://java.sun.com/j2se/1.4.2/docs/api/javax/swing/JPanel.html

y además consultar el tutorial http://java.sun.com/docs/books/tutorial/uiswing/TOC.html

Veremos aquí una descripción simple de dicho componente analizando los constructores, las propiedades y los métodos mas utilizados.

Descripción:

JPanel es un contenedor de propósito general para componentes o controles de peso ligero. Como todos los contenedores, utiliza un Controlador de Distribución para posicionar y dimensionar sus componentes. Como todos los componentes Swing, JPanel permite añadirle bordes y determinar si utiliza el doble buffer para aumentar el rendimiento.

(Descargar el programa ejemplo desarrollado en Netbeans 6.0.1 aquí).

En la figura anterior pueden verse dos paneles etiquetados como “Sistema Métrico Decimal” y “Sistema Métrico U.S.”, ambos paneles contendrán otros controles que permitirán convertir datos de un sistema métrico a otro.

Constructores:
JPanel(), JPanel(boolean), JPanel(LayoutManager), JPanel(LayoutManager, boolean)
Los métodos anterior permiten crear un panel. El parámetro boolean determina la estrategía de buffer del panel, de modo que si tiene un valor true indica doble buffer. El parámetro LayoutManager proporciona el controlador de distribución para el nuevo panel. Si no se especifica, el panel utiliza FlowLayout para distribuir sus componentes.

El primer panel del ejemplo anterior ha sido creado mediante la instrucción

jPanel1 = new javax.swing.JPanel();

Propiedades:

background: Se utiliza para establecer el color del fondo del Panel.

border: Establece el tipo de borde del panel

componentPopupMenu: Se utiliza para asignar un menu Popup al Panel.

foreground: Se utiliza para establecer el color del texto del Panel.

toolTipText: Se utiliza para fijar el texto de la caja de sugerencias del Panel.

Otras Propiedades:

Métodos:

void add(Component) , void add(Component, int) , void add(Component, Object)
void add(Component, Object, int) , void add(String, Component)

Adds the specified component to the panel. When present, the int parameter is the index of the component within the container. By default, the first component added is at index 0, the second is at index 1, and so on. The Object parameter is layout manager dependent and typically provides information to the layout manager regarding positioning and other layout constraints for the added component. The String parameter is similar to the Object parameter.

int getComponentCount()

Gets the number of components in this panel.

Component getComponent(int) , Component getComponentAt(int, int)
Component getComponentAt(Point) , Component[] getComponents()

Gets the specified component or components. You can get a component based on its index or x, y position.

void remove(Component) , void remove(int) , void removeAll()

Removes the specified component(s).

void setLayout(LayoutManager), LayoutManager getLayout()

Sets or gets the layout manager for this panel. The layout manager is responsible for positioning the panel’s components within the panel’s bounds according to some philosophy.

JLabel

Para realizar un estudio riguroso y detallado del Componente JLabel, lo mejor sería visitar la dirección de Sun Microsystems siguiente

http://java.sun.com/j2se/1.4.2/docs/api/javax/swing/JLabel.html

y además consultar el tutorial

http://java.sun.com/docs/books/tutorial/uiswing/TOC.html

Veremos aquí una descripción simple de dicho componente analizando los constructores y las propiedades y métodos mas utilizados.

Descripción:

El componente JLabel, muestra texto no seleccionable e imágenes.

En la imagen anterior pueden verse tres etiquetas, la primera contiene tanto texto como imágenes, la segunda sólo contiene texto y la tercera sólo contiene una imagen.

Constructores:

JLabel(Icon), JLabel(Icon, int), JLabel(String), JLabel(String, Icon, int), JLabel(String, int),
JLabel()

Cada uno de los métodos anteriores crea una instancia de JLabel, inicializándolo para tener texto/imagen/alineamiento especificados. El argumento int especifica el alineamiento horizontal del contenido de la etiqueta dentro de su área de dibujo. El alineamiento horizontal debe ser una de las siguientes constantes definidas: LEFT, CENTER, o RIGHT.

JFrame

Para realizar un estudio riguroso y detallado del Componente JFrame, lo mejor sería visitar la dirección de Sun Microsystem siguiente

http://java.sun.com/j2se/1.4.2/docs/api/javax/swing/JFrame.html

y además consultar el tutorial http://java.sun.com/docs/books/tutorial/uiswing/TOC.html

Veremos aquí una descripción simple de dicho componente analizando los constructores y las propiedades y métodos mas utilizados.

Descripción:

El componente JFrame constituye el contenedor o ventana principal de una aplicación Swing. Este componente contendrá el resto de otros componentes que constituyan la interfaz de la aplicación.

Como puede verse en la imagen anterior el componente jFrame proporciona una ventana principal con los siguientes elementos: Titulo de la ventana, botón de minimizar, maximizar y cerrar.

Constructores:

JFrame() , JFrame(String)

Los dos métodos anteriores permiten instanciar un marco o ventana. El parámetro String se asumirá como el título de la ventana.

Introducción a Swing (I).

Hablar de Swing, significa hablar de la JFC (acrónimo en inglés de Java Foundation Classes), es decir, un conjunto de clases jerarquizadas que permiten diseñar e implementar interfaces gráficas e interactivas escritas en lenguaje Java.

La JFC incluye 5 grandes bloques de características y/o componentes:

1) Soporte para los componentes Swing: Incluye todo desde Contenedores de alto nivel (JFrame, JApplet, JWindow, JDialog) hasta Componentes de peso ligero (JXXXXX, como JButton, JPanel, JMenu, etc)

2) Soporte de Aspecto y Comportamiento: Permite a los componente Swing una variada selección de aspectos y comportamientos. Por ejemplo, el mismo programa puede usar el Aspecto y Comportamiento “de Java” o el Aspecto y Comportamiento “de Windows”.

3) Soporte API de Accesibilidad: Permite tecnologías tales como lectores de pantalla y display Braille para obtener información desde el interface de usuario.

4) Soporte Java 2D API (sólo JDK 1.2 ) : Permite incorporar gráficos 2D de alta calidad, texto, e imágenes en aplicaciones y applets Java.

4) Soporte de Drag and Drop (sólo JDK 1.2) : Permite de arrastrar y soltar entre aplicaciones Java y aplicaciones nativas.

La API de Swing es muy potente, y buena prueba de ello son los 18 paquetes que integran su funcionalidad:

javax.accessibility, javax.swing.plaf, javax.swing.text,
javax.swing, javax.swing.plaf.basic, javax.swing.text.html,
javax.swing.border, javax.swing.plaf.metal, javax.swing.text.html.parser javax.swing.colorchooser, javax.swing.plaf.multi, javax.swing.text.rtf,
javax.swing.event, javax.swing.plaf.synth, javax.swing.tree,
javax.swing.filechooser, javax.swing.table, javax.swing.undo.

Afortunadamente, la mayoría de las aplicaciones solo usan un grupo reducido de los paquetes anteriores. Normalmente se usa: javax.swing y javax.swing.event.

Originariamente, en lugar de utilizar Swing, las interfaces gráficas se escribían en Java con el paquete AWT (Abstract Windowing Toolkit). AWT es dependiente de la plataforma (puede tener distintas apariencias en Windows y en Linux, incluso dentro de Linux, depende del
gestor gráfico que usemos). Las interfaces gráficas Swing son independientes de la plataforma, aunque también permiten al programador especificar una apariencia o aspecto diferente en cada plataforma, esta característica las hace algo mas lentas que las interfaces construidas con AWT.

Swing, tal como ya se ha dicho, es un conjunto de paquetes construido en la parte más alta de AWT y que proporciona un gran número de clases preconstruidas (aproximadamente
250 clases y 40 componentes). Desde el punto de vista del programador, los componentes son probablemente los más interesantes.

Vamos a enumerar los componentes (observe que cada componente empieza con J):

JApplet: Versión extendida de java.applet.Applet que añade el soporte
para los paneles base y otros paneles.

JButton: Comando de botón.

JCheckBox: Casilla de activación que puede ser seleccionada o deseleccionada.

JColorChooser: Panel de controles que permite al usuario seleccionar un color.

JComboBox: Cuadro de lista desplegable, que es una combinación de cuadro de texto y lista desplegable.

JComponent: Clase base para los componentes Swing.

JDesktopPane: Contenedor usado para crear una interfaz de documentos múltiples o un escritorio.

JDialog: Clase base para crear un cuadro de diálogo.

JEditorPane: Componente de texto que permite al usuario editar varios tipos de contenido.

JFilechooser: Permite al usuario elegir un archivo.

JFrame: Una versión extendida de java.awt.Frame que añade soporte para los paneles base y otros paneles.

JInternalFrame: Un objeto de peso ligero que proporciona muchas de las características de un frame pesado.

JInternalFrame. JDesktopIcon: Representa una versión iconificada de un JInternalFrame.

JLabel: Área visualizable para una cadena de texto corta o una imagen (o ambos).

JLayeredPane: Añade capas a un contenedor Swing, permitiendo que los componentes se solapen unos con otros.

JList: Componente que permite al usuario seleccionar uno o más objetos de una lista.

JMenu: Un menú de lista desplegable que contiene JMenultems, que se visualiza cuando el usuario lo selecciona en el componente JMenuBar.

JMenuBar: Una implementación de una barra de menú.

JMenultem: Una implementación de una opción de menú.

JOptionPane: Facilita la posibilidad de que emerja un cuadro de diálogo estándar.

JPanel: Un contenedor genérico ligero.

JPasswordField: Permite editar una línea simple de texto donde no muestra los caracteres originales.

JPopupMenu: Un menú emergente.

JPopupMenu.Separator: Separador de un menú específico emergente.

JProgressBar: Componente que visualiza un valor entero en un intervalo.

JRadioButton: Botón de opción que puede ser seleccionado o no, marcando su estado visualmente.

JRadioButtonMenu: Botón de opción de un elemento de menú.

JRootPane: Componente fundamental de la jerarquía del contenedor.

JScrollBar: Implementación de una barra de desplazamiento.

JScrollPane: Contenedor que gestiona barras de desplazamiento verticales y horizontales y las cabeceras de filas y columnas.

JSeparator: Separador de menú.

JSlider: Componente que permite al usuario seleccionar un valor deslizando
un botón en un intervalo.

JSplitPane: Divide dos componentes.

JTabbedPane: Permite al usuario cambiar entre un grupo de componentes haciendo clic sobre pestañas/lengüetas.

JTable: Presenta datos en un formato de tabla bidimensional.

JTextArea: Área de múltiples líneas que visualiza texto plano.

JTextFieEd: Permite la edición de una línea de texto sencilla.

JTextPane: Componente de texto que se puede marcar con atributos.

JToggleButton: Botón de dos estados.

JToggleButton, ToggleButtonModel: Modelo de botón toggle.

JToolBar: Barra de herramientas, útil para visualizar controles usados normalmente.

JToolBar.Separator: Separador específico de barra de herramientas.

JToolTip: Visualiza una utilidad para un componente.

JTree: Visualiza un conjunto de datos jerárquicos.

JTree.DynamicUti1TreeNode: Permite separar vectoresl hashtables/arrays/cadenas y crear nodos apropiados para los hijos.

JTree.EmptySelectionMode1: Modelo de elección de árbol que no permite seleccionar nada.

JViewport: Vista mediante la que se ve información.

JWindow: Ventana que puede visualizarse en cualquier sitio del escritorio.

COMPONENTES.

A cada elemento gráfico GUI se le denomina genéricamente “componente” y se crean instanciándolos directamente de una clase específica de la jerarquía de clases JFC.

A los componentes que pueden contener a otros componentes se les denomina “contenedores”.


ÁREA PRÁCTICA: SWING y NETBEANS.

El primer elemento que debemos crear en una interfaz gráfica es el soporte para todos los componentes, es decir, o una ventana (componente JFrame) o un Applet.

En términos prácticos, para Netbeans 6.0, abrimos un nuevo proyecto:

Si hacemos ahora Siguiente,

Elegimos el nombre y la ubicación del proyecto, deseleccionamos la casilla de verificación “Crear clase principal” y finalmente pulsamos “Finalizar”. Aparecerá inmediatamente en el IDE de NetBeans un proyecto tipo vacío que puede verse en la Ventana de proyecto,

Si ahora hacemos click con el botón derecho en el proyecto y hacemos “Nuevo”/ “Formulario o JFrame”, es decir:

aparecerá:

donde precisaremos el nombre que recibirá el marco, si hacemos finalmente “Finalizar”,

Seleccionamos ahora desde la paleta de componentes

el componente jLabel y lo soltamos en el marco o JFrame.


Ahora vamos a cambiar algunas propiedades de la etiqueta.

Cambiaremos el texto de la etiqueta por este otro “!!HOLA VIEJO MUNDO!!, modificaremos también el Font y el ForeColor. Estas modificaciones se realizan en la ventana de propiedades.

Para acceder a la ventana de propiedades

  • Hacemos click con el botón derecho dentro de la etiqueta
  • O seleccionamos directamente la ventana propiedades mientras la etiqueta tiene el foco.

Aparecerá:

Cambiamos la propiedad Text, Font y ForeColor de modo que aparezca

Seguidamente ejecutamos el programa, para ello, o bien:

  • Hacemos “Ejecutar”/”Ejecutar Proyecto principal”
  • Hacemos F6
  • Hacemos click con el botón derecho sobre la ventana o marco en la Ventana de proyecto y finalmente “Ejecutar archivo”.
  • Pulsamos en el icono

Obteniéndose finalmente