Swing se presenta como una mejora del AWT, entre estas mejoras cabe destacar:
Contenedores
Pueden contener objetos y otros contenedores. Son de dos tipos:
- Superiores: JApplet, JFrame, JDialog
- Intermedios : JPanel, JScrollPane, JSplitPane, JTabbedPane, JToolBar y otros ms
especializados
Componentes
Aspecto visible de la interfaz. Etiquetas, campos de texto, botones, listas etc. Se situan dentro
de un contenedor.
1) Objeto JFrame
Es un contenedor de Objetos. Y tienen las siguientes caractersticas.
Los objetos JFrame tienen habilitado el botn de cierre de la ventana. Esto significa
que no es necesario programar el suceso cerrando la ventana en las ventanas swing.
El comportamiento por defecto de este botn es provocar el cierre de la venta.
Los controles swing no se aaden directamente al objeto JFrame. Un objeto JFrame
incluye un contenedor interno conocido como panel de contenido, donde se deben
situar los componentes visuales de la Interfaz. En este objeto donde habr que agregar
los controles y sobre el que habr que definir el gestor de organizacin a utilizar. Para
obtener el panel de contenido de una ventana swing, utilizaremos el mtodo
getContentPane() de JFrame:
Container getContentPane()
Mtodos de los Objetos JFrame
setSize(int ancho, int alto) : Establece el tamao dado el ancho y alto del JFrame en pixels
setLocation(int x, int y): Coloca el JFrame en las coordenadas x e y con respect o a la Pantalla.
setVisible(boolean b) : Establece si se puede ver el JFrame o no.
setDefaultCloseOperation(int cte): Establece que es lo que se va hacer cuando el JFrame se
cierra:
El metodo setDefaultCloseOperation puede tomar uno de los siguientes valores staticos de la
clase JFrame:
- WindowConstants.DO_NOTHING_ON_CLOSE: No hace nada
- WindowConstants.HIDE_ON_CLOSE (the default). Oculta el objeta despues de invocar
algun objeto WindowListener registrado.
- WindowConstants.DISPOSE_ON_CLOSE. Oculta y libera el JFrame despues de invocar
algun objeto WindowListener.
- JFrame.EXIT_ON_CLOSE. Termina la aplicacion
setTitle(String titulo): Establece el titulo del JFrame.
Para colocar un JFrame en NetBeans, en el paquete que se quiere crear, hacer clic en el botn
derecho y luego : New->JFrameForm
Luego colocar el nombre del JFrame y hacer clic en Finish
public FrmSaludo()
{
initComponents();
setSize(400,300);
setLocation(300,200);
getContentPane().setBackground(Color.cyan);
setVisible(true);
}
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Toolkit;
public FrmVentanaCentrada ()
{
initComponents();
// Establecemos el tamao de la ventana
setSize(400,300);
Dimension pantalla = Toolkit.getDefaultToolkit().getScreenSize();
// Se obtienen las dimensiones en pixels de la ventana.
Dimension ventana = getSize();
// Una cuenta para situar la ventana en el centro de la pantalla.
setLocation((pantalla.width - ventana.width) / 2, (pantalla.height - ventana.height) / 2);
// Se visualiza la ventana.
setVisible(true);
}
Las instancias de la clase JTextField representan campos de Texto editables ( en una sola fila),
en la que los usuarios pueden escribir.
4) Objeto JPasswordField
Swing proporciona la clase JPasswordField, una subclase de JTextField, que se usa en lugar de
un campo de texto cuando el texto introducido por el usuario es una password. Por razones de
seguridad, un campo de password no muestra los caracteres que teclea el usuario. En su lugar
el campo muestra otro caracter, como un asterisco "*".
5) El Objeto JTextArea
Permite crear campos de Texto con varias filas y columna, en los que se pueden escribir texto
sin formato.
Constructores del JTextArea
JTextArea(): Crea un Nuevo JTextArea.
JTextArea(int rows, int columns): Construye un JTextArea vacio con numero de filas y
columnas.
JTextArea(String text): Construye un JTextArea con texto pasado como parametro.
JTextArea(String text, int rows, int columns): Construye un JTextArea con un texto especifico y
un numero de columnas.
6) Objeto JButton
El Objeto JButton es uno de los mas utilizados, cuando se hace clic se realizan un conjunto de
acciones.
Constructores de la clase JButton
JButton(): Crea un boton sin texto ni icono
JButton(Icon icon): Crea un boton y coloca una imagen.
JButton(String text): Crea un boton y coloca un texto.
JButton(String text, Icon icon): Crea un boton con texto e imagen.
Metodos del Objeto JButton
void setText (String s); Coloca un texto en el botn
String getText ( ): Devuelve el texto que contiene el Boton
void setBackground (Color c): Asigna el color de fondo.
void setFont (Font f): Establece el tipo de letra en el texto del boton
void setIcon(Icon i): Especifica el icono utilizado (objeto ImageIcon).
void setOpaque(Boolean b): Si es true,el botn es opaco.
void setVerticalAlignment(int verticalAlignment): Establece la forma de alineamiento vertical,
que puede ser:
SwingConstants.TOP
SwingConstants.CENTER
SwingConstants.BOTTOM
Programa para crear la clase Rectangulo y calcular el Area, perimetro y la diagonal. Use
Interfaces graficas de usuario
7) Objeto JList
Representa un tipo de lista en la que los elementos estn siempre visibles, permitiendo tanto
la seleccin simple de los mismos (un nico elemento) como la mltiple (ms de un elemento).
Constructores del JList
JList(Object [] elementos): La lista se cargar con los objetos indicados en el array que
se suministra como parmetro. Cada elemento que se muestra en la lista representa el
valor devuelto por la llamada al mtodo toString del Objeto.
JList(Vector elementos): En este caso la lista se cargara con los objetos almacenados en el
Vector que se suministra como parmetro.
JList(ListModel modelo): En general, podemos indicar los elementos a visualizar en un JList
a travs de un objeto ListModel.
JList(): Con este constructor crearamos una lista vacia. Para rellenarla posteriormente
desde algn punto de la aplicacin deberamos recurrir al objeto setModel(ListModel
datos) del objeto JList. En este caso, no podramos utilizar un Vector para la carga de la
lista, sino que tendramos que hacerlo a travs de un objeto cuya clase implementase la
interfaz ListModel.
La Interfaz ListModel
La interfaz ListModel define una serie de mtodos que permiten indicar a una lista la
forma de recuperar los datos que se van a mostrar en su interior. Esto implica que un objeto
ListModel no tiene porque ser necesariamente una coleccin, tan solo tendr que especificar a
travs de los mtodos implementados el mecanismo de obtencin de los datos de la lista.
El paquete javax.swing contiene dos implementaciones de esta interfaz que pueden
ser utilizadas por el programador para definir el modelo de datos:
AbstractListModel : Representa una implementacin por defecto de ListModel. Si
pretendemos crear nuestra propia implementacin de ListModel, puede resultar ms
conveniente heredar esta clase que implementar la propia interfaz, ya que los nicos
mtodos de ListModel que a un programador le puede interesar sobreescribir son:
o int getSize(): Debe devolver el nmero de elementos de la lista.
o Object getElementAt(int index): Devolvera el elemento que ocupe la posicin
indicada en el index
DefaultListModel: Representa una clase de Coleccin especfica para controles JList,
proporcionando todos los mtodos necesarios para manipular la coleccin. El
funcionamiento de esta clase es similar a Vector, de hecho, su funcionalidad est
implementada internamente mediante a un Vector.
En el siguiente bloque de instrucciones de ejemplo se crea un objeto JList en el que se
visualizarn los das de la semana almacenados en una coleccin DefaultListModel
Ejemplo:
1) Se tiene una lista de Nombres, al seleccionar un nombre de la lista este se mostrara en
una etiqueta.
Se escribe el Item que se quiere agregar y presionar Add. Una vez terminada de agregar los
Items presionar OK
Como vamos a seleccionar un elemento de la lista, entonces vamos a utilizar el evento
ListSelectionEvent para lo cual hacemos lo siguiente. Seleccionamos la lista, luego clic derecho
Events->ListSelection ->valuechanged
package proyectojlist;
import javax.swing.*;
import javax.swing.event.*;
public class FrmJList extends javax.swing.JFrame {
public FrmJList() {
initComponents();
setSize(400,300);
setLocation(300,200);
setVisible(true);
}
private void LstNombresValueChanged(javax.swing.event.ListSelectionEvent evt) {
String nombre=LstNombres.getSelectedValue().toString();
lblnombre.setText(nombre);
}
}
2) Crear una lista de ciudades y tener botones para agregar elementos a la lista, eliminar
un elemento de la lista y limpiar los elementos de la lista
En este ejemplo vamos a utilizar un DefaultListModel para manipular los datos de una lista,
Para esto hacemos lo siguiente.
En la ventana de Propiedades escogemos la propiedad model.
Hacemos clic en la parte derecha y nos sale la siguiente Ventana:
En la parte donde dice lstCiudads model property using: en el combo escogemos la opcin
custom code
Y en la opcin que dice lstCiudad.setMode colocamos el nombre del modelo que hemos
creado, en nuestro ejemplo se llama modelo.
package proyectojlist;
import javax.swing.*;
Ejemplo 3:
Ingresar nmeros a una lista y calcular la suma y el promedio.
package proyectojlist;
import javax.swing.*;
public FrmJList03() {
initComponents();
setSize(400,300);
setLocation(300,200);
setVisible(true);
}
private void btnAgregarActionPerformed(java.awt.event.ActionEvent evt) {
String numero=txtNumero.getText();
if(numero.compareToIgnoreCase("")!=0)
{
modelo.addElement(numero);
txtNumero.setText("");
txtNumero.requestFocus();
}
else
JOptionPane.showMessageDialog(null, "No se ha ingresado elemento");
}
8) El Objeto JComboBox
Un JComboBox representa una lista desplegable donde los elementos de la misma estn
ocultos, visualizndose al activar el botn de despliegue de la lista
Constructores de un JComboBox
Al igual que un JList, la clase JComboBox dispone de cuatro constructores, uno sin parmetros
que se utiliza para crear una lista vacia y otros tres que permiten cargar un contenido inicial en
la misma:
Ejemplo:
Se tienen una lista de artculos con sus respectivos precios
Radio 50
Television 300
Refrigeradora 600
DVD 150
Escoger un articulo y mostrar el precio. Luego ingresar la cantidad del articulo a comprar y
calcular el monto total.
Para colocar los Items del JComboBox, seleccionamos el objeto JComboBox y en la ventana de
Propiedades escogemos la propiedad model, hacemos clic en la parte derecha
Luego se escriben los nombres de los Item y se presiona Add. Despues de escribir los tems se
presiona OK
Escogemos el JComboBox y luego como vamos a escoger un elemento del Combo tenemos que
usar el evento ItemEvent Para esto Hacemos click derecho Events->Item->ItemStateChanged
public FrmJComboBox()
{
initComponents();
setSize(400,350);
setLocation(300,200);
setVisible(true);
}
Un JTable puede obtener los datos a visualizar de una coleccin o array de Objetos, pero
tambin de cualquier otra fuente de datos cuyos criterios de obtencin de informacin estn
definidos en una clase que implemente la interfaz TableModel.
Constructores de JTable
JTable()
JTable(int numRows, int numColumns)
JTable(Object[][] rowData, Object[] columnNames)
JTable(TableModel dm)
JTable(TableModel dm, TableColumnModel cm)
JTable(TableModel dm, TableColumnModel cm, ListSelectionModel sm)
JTable(Vector rowData, Vector columNames)
Metodos de JTable
Ejemplo:
Para este primer ejemplo utilizaremos el 3er. constructor de la lista anterior. El cual nos
permite construir una tabla a partir de dos parmetros; el primero de ellos: rowData es un
array bidimencional de objetos que representa el contenido de la tabla, y el segundo:
columnNames representa los nombres de cada columna, contenidos tambin en un array que
por lo general es un array de String's.
Nuestro primer ejemplo tendra las siguientes columnas:
String[] columnNames = {"Nombre", "Apellido", "Pasatiempo", "Aos de Practica",
"Soltero(a)"};
Y utilizaremos el siguiente array para su contenido:
Object[][] data = {
{"Mary", "Campione", "Esquiar", new Integer(5), new Boolean(false)},
{"Lhucas", "Huml", "Patinar", new Integer(3), new Boolean(true)},
{"Kathya", "Walrath", "Escalar", new Integer(2), new Boolean(false)},
{"Marcus", "Andrews", "Correr", new Integer(7), new Boolean(true)},
{"Angela", "Lalth", "Nadar", new Integer(4), new Boolean(false)}
};
En lugar de arrays pudimos haber utizado vectores y utilizado el ultimo de los constructores de
la lista mostrada anteriormente.
Aunque la maner ms sencilla de construir tablas es utilizando cualquiera de los siguientes
constructores:
JTable(Object[][] rowData, Object[] columnNames)
JTable(Vector rowData, Vector columnNames)
El Modelo de Tabla
Los modelos de tabla son objetos que implementan la interface TableModel; a travs de ellos
es posible personalizar mucho ms y mejor el comportamiento de los componentes JTable,
permitiendo utilizar al mximo sus potencialidades.
Todas las tablas cuentan con un modelo de tabla , aunque en el ejemplo anterior no se haya
especificado, existe uno por omisin
La clase AbstractTableModel es la que implementa directamente a la interface TableModel,
aunque es esta clase la que se recomienda extender para utilizarla como modelo de tabla,
existe un modelo de tabla predeterminado que facilita mucho el trabajo con tablas. Este
modelo predeterminado es la clase DefaultTableModel
Constructores de DefaultTableModel
DefaultTableModel()
DefaultTableModel(int numRows, int numColumns)
DefaultTableModel(Object[][] data, Object[] columnNames)
DefaultTableModel(Object[] columnNames, int numRows)
DefaultTableModel(Vector columnNames, int numRows)
DefaultTableModel(Vector data, Vector columNames)
Mtodo Descripcin
void addColumnn(Object columnName) Aade una columna al modelo
addColumnn(Object columnName,
void Aade una columna al modelo
Object[] columnData)
addColumnn(Object columnName,
void Aade una columna al modelo
Vector columnData)
void addRow(Object[] rowData) Aade una fila al final de modelo
void addRow(Vector rowData) Aade una fila al final de modelo
public
Obtiene un Vector que contiene los
static convertToVector(Object[] anArray)
mismos objetos que el array
Vector
Ejemplo: Se tiene la informacin de n productos en una Lista, mostrar todos los elementos en
un JTable.
Como se va a trabajar con un modelo para manipular los datos. Se hace lo siguiente:
1) Se coloca la tabla
Constructores de JRadioButton
JRadioButton(String)
JRadioButton(String, boolean)
JRadioButton(Icon)
JRadioButton(Icon, boolean)
JRadioButton(String, Icon)
JRadioButton(String, Icon, boolean)
JRadioButton()
Crea un ejemplar de JRadioButton. El argumento string especifica el texto, si existe, que debe
mostrar el botn de radio. Similarmente, el argumento, Icon especifica la imagen que debe
usar en vez la imagen por defecto de un botn de radio para el aspecto y comportamiento. Si
se especifica true en el argumento booleano, inicializa el botn de radio como seleccionado,
sujeto a la aprobacin del objeto ButtonGroup. Si el argumento booleano esta ausente o es
false, el botn de radio est inicialmente deseleccionado.
Metodos del JRaddioButton
setText(String): Coloca el Texto que se muestra con el JRadioButton
setIcon(Icon): Establece la Imagen que se muestra con el Radio Button;
boolean isSelected(): Devuelve verdadero si el JRadioButton esta seleccionado
setSelected(boolean b) : Establece el estado del JRadioButton
Solucion
Colocamos los botones y para cambiar el Texto, hacemos clic en botn derecho y editamos el
texto, asi para los 3 botones
Lo mismo hacemos para los dems botones. Una vez que todos los controles han sido
agregados al ButtonGroup. Programamos los eventos de cada botn.
Para esto seleccionamos cada botn, hacemos clic Derecho y Escogemos Events->Action-
>actionPerformed
El cdigo seria:
package proyectojradiobutton;
import java.awt.Color;
public class FrmColores extends javax.swing.JFrame {
public FrmColores() {
initComponents();
setSize(300,300);
setLocation(300,200);
setVisible(true);
}
Constructores
JCheckBox(String)
JCheckBox(String,boolean)
JCheckBox(Icon)
JCheckBox(Icon,boolean)
JCheckBox(String,Icon)
JCheckBox(String,Icon,boolean)
JCheckBox()
Crea un ejemplar de JCheckBox. El argumento string especfica el texto, si existe, que el
checkbox debera mostrar. De forma similar, el argumento Icon especfica la imagen que
debera 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 estar inicialmente desactivado.
Metodos del JCheckBox
setText(String): Coloca el Texto que se muestra con el JCheckBox
setIcon(Icon): Establece la Imagen que se muestra con el JCheckBox
boolean isSelected(): Devuelve verdadero si el JCheckBox esta seleccionado
Eventos del JCheckBox
Si deseamos hacer algo al hacer click en el JCheckBox debemos programar el evento ItemEvent
que se encuentra en el mtodo itemStateChanged de la interfaz ItemListener.
Ejemplo:
Utilizamos dos objetos de la clase JCheckBox para cambiar el estilo de la fuente del texto
desplegado en un objeto JTextField. Uno aplica un estilo de negritas al seleccionarlo y el
otro un estilo de cursivas. Ambos pueden aplicarse a la vez. De inicio ninguno esta
seleccionado.
Colocamos los CheckBox y si queremos hacer algo al seleccionar el CheckBox debemos
programar el Evento ItemEvent. Para esto escogemos el CheckBox, hacemos clic derecho y
luego Events->Items->itemStateChanged
public FrmEjemploCheckBox() {
initComponents();
setSize(300,300);
setLocation(300,200);
setVisible(true);
Ejemplo
En la paleta de Controles Hacemos clic en + donde dice Swing Menus
Aparecen todos los objetos para crear un Menu