Download - JAVA JFreeChart Tutorial
-
Diseo y realizacin de servicios de presentacin de entornos grficos.
Cuaderno de Prcticas 2013/2014 Colegio Montessori Bloque: JAVA
Bloque:
JAVA
-
Diseo y realizacin de servicios de presentacin de entornos grficos.
Cuaderno de Prcticas 2013/2014 Colegio Montessori Bloque: JAVA
Introduccin al lenguaje Java Compilar y ejecutar un programa en Java
Preparando el PATH
Supongamos que en el directorio C:\Archivos de programa\Java\jdk1.5.0_06 tenemos
recien instalado java. Los nmeros del nombre de la carpeta correspondern siempre a
la versin de Java que hayamos instalado, por lo que podrn ser diferentes a los de estos
apuntes.
Con esto, podemos desde una ventana de ms-dos ejecutar el comando "java", que nos
permite ejecutar programas java ya hechos. Sin embargo, todava no podemos ejecutar
el comando "javac" que nos permite compilar programas java, ni el comando "jar" que
nos permite crear ficheros .jar de java.
Para que esto sea posible, debemos poner en el path de bsqueda de ejecutables el
directorio C:\Archivos de programa\Java\jdk1.5.0_06\bin, que es el directorio donde se
encuentran los programas javac.exe y jar.exe. Para poner este directorio en el path de
bsqueda de ejecutables hacemos lo siguiente
En Windows 2000, XP,vista o Windows 7 vamos al icono "mi pc", le damos con el
botn derecho de ratn para sacar el men, elegimos "propiedades", pestaa "opciones
avanzadas" y luego el botn "variables de entorno". Buscamos la variable "Path" y la
editamos. Al final de lo que tenga en ese momento, aadimos un punto y coma y el
directorio C:\Archivos de programa\Java\jdk1.5.0_06\bin
En Windows Vista, vamos al icono "equipo", sacamos el men, elegimos
"propiedades", "configuracin avanzada del sistema", "variables de entorno" y seguimos
como en Windows 2000/XP.
En mi caso, despus de aadir, quedara algo como esto:
C:\Windows\system32;C:\Windows;C:\Archivos de Programa\Java\jdk1.5.0_06\bin
Si queremos mantener el valor de la variable PATH, se har de la siguiente manera
C:\Archivos de programa\Java\jdk1.7.0_25\bin>set path=%path%;C:\Archivos de
programa\Java\jdk1.7.0_25\bin
Una vez hecho esto y aceptados todos los cambios, abrimos una ventana de ms-dos
nueva. Es importante abrirla despus de haber hecho los cambios. En esa ventana de
ms-dos ya deberamos poder ejecutar los comandos javac y jar.
Compilar
Vamos al directorio donde est nuestro proyecto. Ah creamos y hacemos nuestros
fuentes .java. Es importante tener en cuenta lo siguiente:
-
Diseo y realizacin de servicios de presentacin de entornos grficos.
Cuaderno de Prcticas 2013/2014 Colegio Montessori Bloque: JAVA
Los ficheros .java que dentro no ponen package, deben colocarse en el directorio
de nuestro proyecto. El siguiente fuente debera ir en
c:\path_mi_proyecto\fuente1.java
public class fuente1 {
}
Si un fichero .java lleva dentro package paquete;, debemos crear en nuestro
proyecto un subdirectorio paquete y meter dentro el fichero .java. El siguiente fuente
debera ir en c:\path_mi_proyecto\paquete\fuente2.java
package paquete;
public class fuente2 {
}
Si un fichero .java lleva dentro package paquete.subpaquete;, debemos crear
en nuestro proyecto un subdirectorio paquete y dentro de este otro subdirectorio
subpaquete y dentro de este nuestro fuente .java. El siguiente fuente debera ir en
c:\path_mi_proyecto\paquete\subpaquete\fuente3.java
package paquete.subpaquete;
public class fuente3 {
}
Es decir, los package y los directorios deben coincidir.
Para compilar, situados en el directorio de nuestro proyecto, debemos compilar as
javac fuente1.java paquete\fuente2.java paquete\subpaquete\fuente3.java
es decir, debemos compilar desde el directorio de nuestro proyecto y debemos poner, si
hace falta, los path para llegar desde ah a los fuentes. Esto generar los ficheros
fuente1.class, paquete\fuente2.class y paquete\subpaquete\fuente3.class
ejercicio2
/**
* Clase que pinta por consola "Hola mundo",
* utilizando un objeto de la propia clase.
-
Diseo y realizacin de servicios de presentacin de entornos grficos.
Cuaderno de Prcticas 2013/2014 Colegio Montessori Bloque: JAVA
* @author 2 DAM
*/
public class ejercicio2{
public static void main (String args[]){
ejercicio2 obj = new ejercicio2();
obj.Saludar("Hola mundo");
//Version simple: System.out.println("Hola mundo");
}
private void Saludar(String saludo){
System.out.println(saludo);
}
}
ejercicio3.java
/**
* Clase que pinta por consola "Hola mundo",
* utilizando un objeto de otra clase.
* @author 2 DAM
*/
public class ejercicio3{
public static void main (String args[]){
pintar obj = new pintar();
obj.llamada("Hola mundo");
}
}
class pintar{
public void llamada(String dato){
-
Diseo y realizacin de servicios de presentacin de entornos grficos.
Cuaderno de Prcticas 2013/2014 Colegio Montessori Bloque: JAVA
Saludar(dato);
}
private void Saludar(String saludo){
System.out.println(saludo);
}
}
Ejercicio4
/**
* Clase que pinta por consola "Hola mundo",
* utilizando un objeto de otra clase con constructor.
* @author 2 DAM
*/
public class ejercicio4{
public static void main (String args[]){
escribir obj = new escribir("Hola mundo");
}
}
class escribir{
escribir(String dato){
Saludar(dato);
}
private void Saludar(String saludo){
System.out.println(saludo);
}
}
Ejecutar sin crear el .jar
-
Diseo y realizacin de servicios de presentacin de entornos grficos.
Cuaderno de Prcticas 2013/2014 Colegio Montessori Bloque: JAVA
Una vez que tenemos los .class generados, ya podemos ejecutar. Nuevamente debemos
estar situados en el directorio de nuestro proyecto y, segn cual sea la clase que contiene
el main, debemos ejecutar
java fuente1
java paquete.fuente2
java paquete.subpaquete.fuente3
Hay que fijarse en varias cosas importantes. La primera es que estamos en el directorio
de nuestro proyecto, no en los subdirectorios paquete ni subpaquete. Tambin es
importante ver que hemos separado paquete, subpaquete y el nombre de las clases con
puntos, y no con las barras \. Finalmente, es importante fijarse que no hemos aadido
.class detrs.
Crear un Fichero JAR
El formato bsico del comando para crear un fichero JAR es.
jar cvf fichero-jar fichero(s)-de entrada
Echemos un vistazo a las opciones y argumentos utilizados en este comando.
La opcin c indica que quieres crear un fichero JAR.
v - produce un salida verbosa en stderr (en versin 1.1) o stdout (en versin 1.2)
mientras se construye el fichero. La salida verbosa te dice el nombre de cada
fichero aadido al fichero JAR o los errores que se puedan producir.
La opcin f indica que quieres que la salida vaya a un fichero en vez de a stdout.
La opcin m indica que queremos usar nuestro fichero de manifiesto (el caso
contrario deberamos editar el *.jar y aadirle la lnea del fichero que contenga
el main).
fichero-file es el nombre que quieres para el fichero JAR resultante. Puedes
utilizar cualquier nombre de fichero. Por convencin, a los ficheros JAR se les
da la extensin .jar, aunque no es obligatorio.
El argumento fichero(s)-de entrada es una lista delimitada por espacios de uno
o ms ficheros que deben ser situados dentro de tu fichero JAR. Este argumento
puede tener simbolo del comodn *. Si alguno de los fichero(s)-de entrada, es un
directorio, el contenido de dicho directorio se aadir al fichero JAR
recursivamente.
Las opciones c, v, m y f pueden aparecer en cualquier orden, pero no debe existir
ningn espacio entre ellas.
Este comando generar un fichero JAR comprimido y lo situar en el directorio actual.
El comando tambin genera un fichero de manifiesto, por defecto. META-
INF/MANIFEST.MF, para el archivo JAR.
Podras aadir cualquiera de estas opciones adicionales a las opciones cf del comando
bsico.
-
Diseo y realizacin de servicios de presentacin de entornos grficos.
Cuaderno de Prcticas 2013/2014 Colegio Montessori Bloque: JAVA
0 - indica que no quieres que el fichero JAR sea comprimido.
M - indica que no se debera producir el fichero de manifiesto por defecto.
m - utilizada para incluir informacin de manifiesto desde un fichero de
manifiesto existente. El formato utilizado por esta opcin es
jar vcmf existing-manifest output-file input-file(s)
En la versin 1.1 el formato JAR slo soporta nombres de ficheros ASCII. La versin
1.2 aade soporte para nombres codificados en UTF8.
Un ejemplo de MANIFEST.MF para la versin 1.2 y posteriores sera el siguiente:
Manifest-Version:1.0
Created-By: 1.6.0_20 (Sun Microsystem Inc.)
Main-Class: App
NOTA: es muy importante colocar un salto de lnea despus de la ltima lnea.
Una vez creado un fichero JAR para ejecutarlo lo haremos con:
Java jar fichero.jar
Crear un Fichero JAR con paquetes y subpaquetes
Primero creamos las rutas de las carpetas, como en la imagen inferior:
Donde la carpeta raz es la jar en ella colocaremos el fichero que
contenga el main y en la carpeta secundario una clase llamada
pintar que ser invocada desde el main previo a su importacin.
mimain.java
/* package principal (no es necesaria por encontrarnos en el mismo
nivel que el main; */
import principal.secundario.*;
public class mimain{
public static void main(String [] args){
pintar pt = new pintar("Hola holita hola");
}
}
-
Diseo y realizacin de servicios de presentacin de entornos grficos.
Cuaderno de Prcticas 2013/2014 Colegio Montessori Bloque: JAVA
pintar.java
package principal.secundario;
public class pintar{
public pintar(String dato){
System.out.println(dato);
}
}
Primero compilaremos los ficheros .java a .class, si compilamos
mimain.java como invoca a pintar.java este tambin ser compilado.
Despus deberemos crear el fichero jar, para ello usaremos la orden:
- jar cvf mimain.jar mimain.class principal\secundario\pintar.class - jar cvf mimain.jar jar\*
Ahora deberemos modificar el MANISFEST.MF aadiendo la opcin Main-
Class: mimain.
Interfaces Introduccin
Las interfaces Java son expresiones puras de diseo, se trata de autnticas
conceptualizaciones no implementadas (en la propia interfaz) que sirven de gua para
definir una determinada lnea de conceptos de clase, pero sin desarrollar un mecanismo
de solucin (cdigo).
Se trata de declarar mtodos abstractos y constantes que posteriormente puedan ser
implementados de diferentes maneras segn las necesidades de un programa en las
clases que lo implementen.
Por ejemplo: Un interfaz es una lista de acciones que puede llevar a cabo un
determinado objeto. Pero?, Eso no eran los mtodos ?, en una clase adems de
aparecer los mtodos apareca el cdigo de dichos mtodos, en cambio en un interfaz
slo existe la definicin del mtodo, no su cdigo.
Ejemplo: Un interfaz en el que existen una lista de mtodos despegar, aterrizar,
recogerTren y sacarTren. Cuando vemos esta interfaz intuimos un avin. El motivo es
que el avin es el concepto que engloba las acciones que hemos detallado antes, a pesar
que existan muchos objetos avin diferentes entre s, por ejemplo Airbus A340, Boeing
747, AirBus A300, ...
Aunque todos ellos, puedan pertenecer a clases distintas, si poseen el interfaz avin,
dispondrn de los mtodos detallados en la lista del interfaz avin.
Esto significa tambin que a cualquier avin le podemos pedir que vuele, sin
importarnos a que clase real pertenezca el avin, evidentemente cada clase especificar
como volar el avin (porque proporciona el cdigo de la funcin volar).
-
Diseo y realizacin de servicios de presentacin de entornos grficos.
Cuaderno de Prcticas 2013/2014 Colegio Montessori Bloque: JAVA
Declaracin
Para declarar una interfaz se utiliza la sentencia interface, de la misma manera que se
usa la sentencia class:
interface MiInterfaz {
int CONSTANTE = 10;
int metodoAbstracto( int parametro );
}
Se observa en la declaracin que las variables adoptan la declaracin en maysculas,
pues en realidad actuarn como constantes final.
Los mtodos tras su declaracin tienen un punto y coma, en lugar de la declaracin de
su cuerpo entre llaves. Son mtodos abstractos, por tanto, mtodos sin implementacin.
Implementacin de una interfaz
Las interfaces carecen de cdigo (funcionalidad) por no estar implementados sus
mtodos.
La palabra reservada implements utilizada en la declaracin de una clase indica que la
clase implementa la interfaz, es decir, que asume las constantes de la interfaz, y sus
mtodos (sin codificar): class ImplementaInterfaz implements MiInterfaz{
int multiplicando=CONSTANTE;
int metodoAbstracto( int parametro ){
return ( parametro * multiplicando );
}
}
En este ejemplo se observa que han de codificarse todos los mtodos que determina la
interfaz (metodoAbstracto()), y la validez de las constantes (CONSTANTE) que define
la interfaz durante toda la declaracin de la clase.
Herencia mltiple
Una interfaz no puede implementar otra interfaz, aunque s extenderla (extends)
amplindola.
Java es un lenguaje que incorpora herencia simple de implementacin pero que puede
aportar herencia mltiple de interfaz . Esto posibilita la herencia mltiple en el diseo
de los programas Java.
Una interfaz puede heredar de ms de una interfaz antecesora. interface InterfazMultiple extends Interfaz1,Interfaz2{ }
Una clase no puede tener ms que una clase antecesora, pero puede implementar ms de
una interfaz: class MiClase extends SuClasePadre implements Interfaz1,Interfaz2{ }
Ejercicio 1 Interfaces
Crear la interfaz PuedeContar (que es capaz de Contar), un interfaz muy simple que slo
posee un mtodo Contar.
PuedeContar.java
-
Diseo y realizacin de servicios de presentacin de entornos grficos.
Cuaderno de Prcticas 2013/2014 Colegio Montessori Bloque: JAVA
public interface PuedeContar {
public void Contar();
}
Crear la clase Persona que implemente el interfaz PuedeContar y que cuando cuente
diga nmeros.
Espanol.java public class Espanol implements PuedeContar {
public void Contar() {
System.out.println("uno dos tres cuatro cinco seis");
}
}
Crear la clase Ingls y Francs que implemente el interfaz PuedeContar y que muestre
como cuentan Ingles.java public class Ingles implements PuedeContar {
public void Contar() {
System.out.println("one two three four five six");
}
}
Frances.java public class Frances implements PuedeContar {
public void Contar() {
System.out.println("un deux trois quatre cinq six sept huit");
}
}
Realizar el programa que haga Contar a un Ingls y a un Francs.
ProgramaInterfaz.java public class ProgramaInterfaz {
public static void main(String arg[]) {
Espanol julio = new Espanol();
hacerContar(julio);
Ingles manolo = new Ingles();
hacerContar(manolo);
Frances claudio = new Frances();
hacerContar(claudio);
}
public static void hacerContar(PuedeContar contador) {
contador.Contar();
}
}
Ejercicio 2 Algunos seres pueden caminar y puede nadar estas dos capacidades son interfaces
(PuedeCaminar.java y PuedeNadar.java).
Los mamiferos son animales que pueden moverse (Mamifero.java). El gato es un
mamifero que puede nadar y moverse (Gato.java).
Un Loro puede caminar pero no puede nadar.
PuedeCaminar.java public interface PuedeCaminar{
public void caminar();
}
-
Diseo y realizacin de servicios de presentacin de entornos grficos.
Cuaderno de Prcticas 2013/2014 Colegio Montessori Bloque: JAVA
PuedeNadar.java public interface PuedeNadar {
public void nadar();
}
Mamifero.java public class Mamifero {
String especie, color;
public void caminar() {
System.out.println("El mamfero camina");
}
}
Gato.java public class Gato extends Mamifero implements PuedeCaminar, PuedeNadar
{
private int numeroPatas = 4;
public void nadar() {
System.out.println("El gato nada");
}
}
Loro.java public class Loro implements PuedeCaminar...
...System.out.println("El loro camina");
...
Interfaces.java public class Interfaces {
public static void main(String[] args) {
Gato felix = new Gato();
felix.caminar();
felix.nadar();
Loro pepe = new Loro();
pepe.caminar();
}
}
Creacin de Interfaces Grficos de Usuario con la librera Swing Ejercicios resueltos
Creacin de una ventana.
package dam; //a eleccin del alumno con package o sin el.
import javax.swing.*;
public class EjemploVentana2{
public static void main (String [] args) {
JFrame ven = new JFrame(); //crea la ventana en el objeto ven.
ven.setTitle("Ventanote"); //asigna rtulo a la ventana
ven.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE) ; //cierra
el objeto JFrame
ven.setSize(300,300); // define el tamao de la ventana
//ven.show(); //Se utilizo hasta la versin JDK 1.5
ven.setVisible(true); //importante colocar el setVisible() al
final de todos los metodos.
}
}
import javax.swing.JFrame;
-
Diseo y realizacin de servicios de presentacin de entornos grficos.
Cuaderno de Prcticas 2013/2014 Colegio Montessori Bloque: JAVA
public class EjemploVentana2a {
public static void main (String [] args){
JFrame ventana = new JFrame();
ventana.setTitle("Pedazo ventana");
ventana.setDefaultCloseOperation(3); // el 3 equivale a
JFrame.EXIT_ON_CLOSE
ventana.setLocation(50,50); // Indica el punto de insercin de
la ventana
ventana.setSize(400,400);
ventana.setVisible(true);
}
}
Ubicacin de controles en un formulario utilizando FlowLayout y un Panel
package dam; //a eleccin del alumno con package o sin el.
import javax.swing.*;
import java.awt.*;
import javax.swing.event.*;
public class EjemploVentana3 {
public static void main (String [] args){
JFrame ven =new JFrame(); //creamos la ventana
Container contenedor = new Container();
FlowLayout rejilla = new FlowLayout();
JPanel p = new JPanel();
JLabel etiqueta = new JLabel("Pedazo de etiqueta");
contenedor.setLayout(rejilla);
contenedor.add(p); //aadimos el panel al contenedor
ven.add (contenedor);
//p.setBackground(new Color(255,0,0));
p.add(etiqueta);
ven.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
ven.setSize(200,200);
ven.setVisible(true);
}
}
Insercin de imgenes en un control Swing
package dam; //a eleccin del alumno con package o sin el.
import javax.swing.*;
import java.awt.*;
import javax.swing.event.*;
public class EjemploVentana4 {
public static void main (String [] args){
JFrame ven =new JFrame(); //creamos la ventana
Container contenedor = new Container();
FlowLayout rejilla = new FlowLayout();
JLabel etiqueta = new JLabel("Pedazo de etiqueta");
JPanel p = new JPanel();
ImageIcon img = new ImageIcon("c:\\koala.jpg");
contenedor.setLayout(rejilla);
contenedor.add(p); //aadimos el panel al contenedor
contenedor.add(new JLabel(img));
ven.add (contenedor);
p.setBackground(new Color(255,0,0) );
-
Diseo y realizacin de servicios de presentacin de entornos grficos.
Cuaderno de Prcticas 2013/2014 Colegio Montessori Bloque: JAVA
p.add(etiqueta);
ven.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
ven.setSize(200,200);
ven.setVisible(true);
}
}
Botones
package dam; //a eleccin del alumno con package o sin el.
import javax.swing.*;
import java.awt.*;
import javax.swing.event.*;
public class EjemploVentana7 {
public static void main (String [] args){
JFrame ven =new JFrame(); //creamos la ventana
Container contenedor = new Container();
FlowLayout rejilla = new FlowLayout();
JLabel etiqueta = new JLabel("Pedazo de etiqueta");
JPanel p = new JPanel();
JButton b1 = new JButton("Aceptar") ;
JButton b2 = new JButton("Cancelar");
contenedor.setLayout(rejilla);
contenedor.add(p); //aadimos el panel al contenedor
ven.add (contenedor);
contenedor.add(b1);
contenedor.add(b2);
ven.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
ven.setSize(600,200);
ven.setVisible(true);
}
}
Control CheckBox (botn de chequeo)
package dam; //a eleccin del alumno con package o sin el.
import javax.swing.*;
import java.awt.*;
import javax.swing.event.*;
public class EjemploVentana8 {
public static void main (String [] args){
JFrame ven =new JFrame(); //creamos la ventana
Container contenedor = new Container();
FlowLayout rejilla = new FlowLayout();
JLabel etiqueta = new JLabel("Pedazo de etiqueta");
JPanel p = new JPanel();
JCheckBox cb=new JCheckBox("Pizarra");
cb.setFont (new Font ("Arial",Font .PLAIN, 20));
contenedor.setLayout(rejilla);
contenedor.add(p); //aadimos el panel al contenedor
ven.add (contenedor);
contenedor.add(cb) ;
ven.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
ven.setSize(300,200);
ven.setVisible(true);
}
}
-
Diseo y realizacin de servicios de presentacin de entornos grficos.
Cuaderno de Prcticas 2013/2014 Colegio Montessori Bloque: JAVA
Control RadioButton (botn de radio)
package dam; //a eleccin del alumno con package o sin el.
import javax.swing.*;
import java.awt.*;
import javax.swing.event.*;
public class EjemploVentana9 {
public static void main (String [] args){
JFrame ven =new JFrame(); //creamos la ventana
Container contenedor = new Container();
FlowLayout rejilla = new FlowLayout();
JPanel p = new JPanel();
JRadioButton rb=new JRadioButton("Pizarra");
rb.setFont (new Font ("Arial",Font .PLAIN, 20));
contenedor.setLayout(rejilla);
contenedor.add(p); //aadimos el panel al contenedor
ven.add (contenedor);
p.add(rb) ;
ven.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
ven.setSize(300,200);
ven.setVisible(true);
}
}
Agrupacin de varios botones de radio
package dam; //a eleccin del alumno con package o sin el.
import javax.swing.*;
import java.awt.*;
import javax.swing.event.*;
public class EjemploVentana10 {
public static void main (String [] args){
JFrame ven =new JFrame(); //creamos la ventana
Container contenedor = new Container();
GridLayout rejilla = new GridLayout(0,1);
Font fuente = new Font ( "Arial" ,Font .PLAIN, 18); //creamos
un objeto de atributos del texto (objeto fuente)
JPanel p = new JPanel();
contenedor.setLayout (rejilla);
JRadioButton naftero=new JRadioButton("Gasolina");
naftero.setFont (fuente);
JRadioButton gasolero=new JRadioButton("Diesel");
gasolero.setFont (fuente);
contenedor.add(p); //aadimos el panel al contenedor
ven.add (contenedor);
contenedor.add(new Label("Selecciona el tipo de
combustible"));
//Creamos la agrupacion de RadioButton
ButtonGroup GrupoBotones = new ButtonGroup();
GrupoBotones.add(naftero);
GrupoBotones.add(gasolero);
contenedor.add(naftero);
contenedor.add(gasolero);
ven.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
ven.setSize(300,200);
ven.setVisible(true);
-
Diseo y realizacin de servicios de presentacin de entornos grficos.
Cuaderno de Prcticas 2013/2014 Colegio Montessori Bloque: JAVA
}
}
Control ComboBox (Caja de texto desplegable)
package dai; //a eleccin del alumno con package o sin el.
import javax.swing.*;
import java.awt.*;
import javax.swing.event.*;
public class EjemploVentana11 {
public static void main (String [] args){
JFrame ven =new JFrame(); //creamos la ventana
Container contenedor = new Container();
FlowLayout rejilla = new FlowLayout();
Font fuente = new Font ( "Arial" ,Font .PLAIN, 18); //creamos
un objeto de atributos del texto (objeto fuente)
JPanel p = new JPanel();
contenedor.setLayout(rejilla);
contenedor.add(p); //aadimos el panel al contenedor
ven.add (contenedor);
JComboBox cb = new JComboBox();
cb.setFont(fuente);
cb.addItem("pizarra");
cb.addItem("Pantalla");
cb.addItem("protector");
contenedor.add(cb);
ven.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
ven.setSize(300,200);
ven.setVisible(true);
}
}
Carga de un ComboBox con los datos de un vector
package dai; //a eleccin del alumno con package o sin el.
import java.awt.*;
import javax.swing.*;
import javax.swing.event.*;
public class EjemploVentana11a {
public static void main(String[] args) {
JFrame ven = new JFrame(); //creamos la ventana
Container contenedor = new Container();
FlowLayout rejilla = new FlowLayout();
Font fuente = new Font("Arial", Font.PLAIN, 18); //creamos un
objeto de atributos del texto (objeto fuente)
JPanel p = new JPanel();
contenedor.setLayout(rejilla);
contenedor.add(p); //aadimos el panel al contenedor
ven.add(contenedor);
String vector[] = {"uno","dos","tres","cuatro","cinco"};
JComboBox cb = new JComboBox();
cb.setFont(fuente);
for (int i=0; i
-
Diseo y realizacin de servicios de presentacin de entornos grficos.
Cuaderno de Prcticas 2013/2014 Colegio Montessori Bloque: JAVA
ven.setSize(300, 200);
ven.setVisible(true);
}
}
Uso y carga de un control JList con los datos de un vector
import java.awt.Component;
import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.Font;
import java.awt.Label;
import javax.swing.JFrame;
import javax.swing.JList;
import javax.swing.JPanel;
public class EjemploVentana12 {
public static void main (String [] args){
JFrame ven =new JFrame(); //creamos la ventana
Container contenedor = new Container();
FlowLayout rejilla = new FlowLayout();
Font fuente = new Font ( "Times" ,Font .PLAIN, 12); //creamos
un objeto de atributos del texto (objeto fuente)
JPanel p = new JPanel();
contenedor.setLayout(rejilla);
contenedor.add(p); //aadimos el panel al contenedor
String ElementosLista[] ={"ventana", "puerta", "pared",
"suelo"};
/* String ElementosLista[];
ElementosLista[0] = "ventana";
ElementosLista[1] = "puerta";
ElementosLista[2] = "pared";
ElementosLista[3] = "suelo"; */
ven.add (contenedor);
JList lista = new JList(ElementosLista);
lista.setFont(fuente);
contenedor.add(lista);
ven.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
ven.setSize(200,200);
ven.setVisible(true);
}
}
Uso de tablas y carga de datos desde un vector en JTable
import javax.swing.*;
import java.awt.*;
public class EjemploVentana13 {
public static void main( String[] args){
Container cp = new Container();
JFrame ventana = new JFrame();
cp.setLayout(new BorderLayout ( )) ;
ventana.add(cp);
// Nombres de las columnas
final String nombreCol[] = { "Sesion2" , "Tema" , "Fecha" ,
Aula" };
// Datos
Object datos[][] = {
{"1" , "MySQL" , "12/07/04" , "5" } ,
{"2" , "MySQL" , "13/07/04" , "5" } ,
-
Diseo y realizacin de servicios de presentacin de entornos grficos.
Cuaderno de Prcticas 2013/2014 Colegio Montessori Bloque: JAVA
{"3" , "JDBC" , "14/07/04" , "5" } ,
{"4" , "GUI" , "15/07/04" , "5" } ,
{"5" , "Proyecto " , "16/07/04" , "5" }};
JTable tabla = new JTable(datos , nombreCol);
Font fuente =new Font ("Times",Font.BOLD,9);
tabla.setFont (fuente) ;
tabla.setRowHeight(24) ;
JScrollPane jsp=new
JScrollPane(tabla,JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,JScrollPane.HO
RIZONTAL_SCROLLBAR_ALWAYS);
cp.add(jsp , BorderLayout .CENTER) ;
ventana.setSize(500,100) ;
ventana.setVisible(true ) ;
ventana.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
Uso de JTable y pintado de filas en una tabla
MiTablaCeldasRedibujar.java
import javax.swing.*;
import javax.swing.table.*;
import java.awt.*;
class MiTablaCeldasRedibujar extends DefaultTableCellRenderer {
public MiTablaCeldasRedibujar() {
setOpaque(true);
}
public Component getTableCellRendererComponent(JTable table,
Object value,
boolean isSelected, boolean hasFocus, int row, int column)
{
/*En vez de modificar la tabla directamente, creamos otro
componente para pegarlo sobre la tabla,
pasndole todos los parmetros de la tabla original, los
cuales vienen en el constructor de este mtodo*/
final Component tabla =
super.getTableCellRendererComponent(table, value, isSelected,
hasFocus, row, column);
tabla.setBackground(Repintar.pintarFilas(row));
return tabla;
}
}
Repintar.java import javax.swing.*;
import javax.swing.table.*;
import java.awt.*;
class Repintar{
public static Color pintarFilas(int row){
-
Diseo y realizacin de servicios de presentacin de entornos grficos.
Cuaderno de Prcticas 2013/2014 Colegio Montessori Bloque: JAVA
if(row % 2 == 0){
return Color.red;
}else{
return Color.green;
}
}
public static void nuevaFila(JTable tabla, String[] coleccion){
DefaultTableModel model = (DefaultTableModel)
tabla.getModel();
model.addRow(coleccion);
}
}
test.java import javax.swing.*;
import javax.swing.table.*;
public class test extends JFrame{
String[][] data = { {"0","0","5","1","0","12"},
{"5","0","2","8","0","0"},
{"50","5","0","8","0","0"},
{"8","0","0","0","5","0"},
{"0","0","8","9","0","10"},
{"0","0","8","9","0","10"}};
final Object[] titulos = {"Columna 1", "Columna 2", "Columna 3",
"Columna 4", "Columna 5", "Columna 6"};
String[] datos2= {"1", "2", "3", "4", "5", "6"};
public test() {
setSize(500,135);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setLocation(200,200);
DefaultTableModel myModel = new DefaultTableModel(data, titulos);
JTable myTable = new JTable(myModel);
myTable.setDefaultRenderer(Object.class, new
MiTablaCeldasRedibujar());
Repintar.nuevaFila(myTable, datos2);
JScrollPane x = new JScrollPane(myTable);
getContentPane().add(x);
setVisible(true);
}
public static void main(String args[]) {
test t = new test();
}
}
Uso del control JTree (rbol)
package dai; //a eleccin del alumno con package o sin el.
-
Diseo y realizacin de servicios de presentacin de entornos grficos.
Cuaderno de Prcticas 2013/2014 Colegio Montessori Bloque: JAVA
import java.awt.BorderLayout;
import java.awt.Container;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTree;
import javax.swing.tree.DefaultMutableTreeNode;
public class EjemploVentana14 {
public static void main(String[] args) {
JTree arbol;
JFrame ventana = new JFrame();
JPanel panel = new JPanel();
Container contenedor = new Container();
contenedor.setLayout (new BorderLayout());
DefaultMutableTreeNode entrada = new
DefaultMutableTreeNode("Enlaces");
DefaultMutableTreeNode sub1;
DefaultMutableTreeNode sub2;
sub1 = new DefaultMutableTreeNode("Buscadores");
entrada.add(sub1);
sub2 = new DefaultMutableTreeNode("Google");
sub1.add(sub2);
sub2 = new DefaultMutableTreeNode("Yahoo");
sub1.add(sub2);
sub2 = new DefaultMutableTreeNode("Lycos");
sub1.add(sub2);
sub2 = new DefaultMutableTreeNode("Terra");
sub1.add(sub2);
sub1 = new DefaultMutableTreeNode("Java");
entrada.add(sub1);
sub2 = new DefaultMutableTreeNode("Sun");
sub1.add(sub2);
sub2 = new DefaultMutableTreeNode("IBM");
sub1.add(sub2);
sub2 = new DefaultMutableTreeNode("JavaWorld");
sub1.add(sub2);
sub2 = new DefaultMutableTreeNode("Hot Java");
sub1.add(sub2);
arbol = new JTree(entrada);
contenedor.add(arbol);
ventana.add(contenedor);
ventana.setSize(300,300);
ventana.setVisible(true);
ventana.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
Mens desplegables
package dai; //a eleccin del alumno con package o sin el.
import java.awt.*;
import javax.swing.*;
public class EjemploVentana15 {
public static void main(String[] args) {
-
Diseo y realizacin de servicios de presentacin de entornos grficos.
Cuaderno de Prcticas 2013/2014 Colegio Montessori Bloque: JAVA
JFrame ventana = new JFrame();
JMenuBar mb;
JMenu archivo = new JMenu("Archivo");
JMenu editar = new JMenu("Editar");
JMenuItem nuevo = new JMenuItem("Nuevo");
JMenuItem abrir = new JMenuItem("Abrir");
JMenuItem ver = new JMenuItem("Ver");
JMenuItem copiar = new JMenuItem("copiar");
JMenuItem pegar = new JMenuItem("pegar");
JMenuItem borrar = new JMenuItem("borrar",2);
archivo.add(nuevo);
archivo.add(abrir);
archivo.add(ver);
editar.add(copiar);
editar.add(pegar);
editar.add(borrar);
mb = new JMenuBar();
mb.add(archivo);
mb.add(editar);
ventana.setJMenuBar(mb);
ventana.setSize(300,250);
ventana.setVisible(true);
ventana.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
Layout
Uso Absolute Layout
/** * Prepara y muestra una ventana cuyo contenedor principal no tiene ningn tipo de layout que maneje su contenido * Cuando no se especifica un layout (se establece un valor null como layout), es necesario especificar la posicin de todos los
elementos dentro del contenedor con respecto a la esquina superior izquierda de su contenedor, as como el tamao que van a tener.
* Para posicionar dichos elementos se usa el mtodo setBounds(x, y, width, height) sobre cada uno de ellos. * Cuando el contenedor es redimensionado, los elementos que contiene mantienen su posicin y tamao invariables, pudiendo
incluso quedar ocultos por estar "fuera" de dicho contenedor
*/ public class UsoAbsoluteLayout extends JFrame {
private JLabel lblEtiqueta;
private JButton btnNewButton; private JTextField textField;
/** * Mtodo principal que lanza la aplicacin
*/
public static void main(String[] args) {
//Preparar la tarea que debe ejecutarse en el Event Dispath Thread y que mostrar la ventana
EventQueue.invokeLater(new Runnable() {
public void run() { try {
UsoAbsoluteLayout frame = new UsoAbsoluteLayout();
frame.setVisible(true); } catch (Exception e) {
e.printStackTrace();
} }
}); }
/** * Construye una nueva ventana
*/
-
Diseo y realizacin de servicios de presentacin de entornos grficos.
Cuaderno de Prcticas 2013/2014 Colegio Montessori Bloque: JAVA
public UsoAbsoluteLayout() { jbInit();
} /**
* Inicializa y personaliza los componentes del GUI.
* La ventana contiene una etiqueta, un botn y un campo de texto cuyos tamaos y posiciones han sido especificados de forma absoluta/manual
*/
private void jbInit() { //Establecer ttulo para la ventana
setTitle("Ventana");
//Establecer tamao inicial de la ventana setSize(new Dimension(500, 400));
//Establecer opcin de salida por defecto => Salir de la aplicacin al cerrar la ventana
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //Mostrar la ventana centrada en la pantalla
setLocationRelativeTo(null);
//Establecemos el layout del contenedor principal a null
getContentPane().setLayout(null);
//Aadir al panel una etiqueta a 69 pxeles de la izquierda y 63 de la parte superior, y con un tamao de 46x14
pxeles
this.lblEtiqueta = new JLabel("Etiqueta"); this.lblEtiqueta.setBounds(69, 63, 46, 14);
getContentPane().add(this.lblEtiqueta);
//Aadir al panel un botn a 147 pxeles de la izquierda y 176 de la parte superior, y con un tamao de 89x23
pxeles this.btnNewButton = new JButton("Botn");
this.btnNewButton.setBounds(147, 176, 89, 23);
getContentPane().add(this.btnNewButton);
//Aadir al panel un campo de texto a 321 pxeles de la izquierda y 263 de la parte superior, y con un tamao
de 109x20 pxeles this.textField = new JTextField();
this.textField.setBounds(321, 263, 109, 20);
getContentPane().add(this.textField); }
}
Border Layout
import java.awt.BorderLayout; import java.awt.EventQueue;
import javax.swing.JFrame; import javax.swing.JPanel;
import java.awt.Color;
import java.awt.Dimension;
/**
* Prepara y muestra una ventana cuyo contenedor principal es manejado por un BorderLayout * El BorderLayout permite posicionar componentes en el elemento que los contiene de cinco formas diferentes, haciendo que estos
se comporten de diferentes maneras.
* Posiciones: * -NORTH: El elemento posicionado con la propiedad NORTH se posicionar en la parte superior del componente que lo
contenga, ajustando su anchura a la de dicho componente. La altura de este elemento deber ser definida a mano
* -SOUTH: Similar al caso anterior solo que el elemento se posicionar en la parte inferior del componente que lo contenga * -WEST: El elemento posicionado con la propiedad WEST se posicionar en la parte izquierda del componente que lo contenga,
ajustando su altura a la de dicho componente. La anchura de este elemento deber ser definida a mano
* -EAST: Similar al anterior solo que el elemento se posicionar en la parte derecha del componente que lo contenga. * -CENTER: El elemento se posicionar en el centro del componente que lo contenga, y se expandir en ambos ejes para ocupar
todo el espacio libre dejado por el resto de elementos.
*/ public class UsoBorderLayout extends JFrame {
/** Panel posicionado como CENTER */ private JPanel panel;
/** Panel posicionado como EAST */
private JPanel panel_1; /** Panel posicionado como WEST */
private JPanel panel_2;
/** Panel posicionado como SOUTH */
-
Diseo y realizacin de servicios de presentacin de entornos grficos.
Cuaderno de Prcticas 2013/2014 Colegio Montessori Bloque: JAVA
private JPanel panel_3; /** Panel posicionado como NORTH */
private JPanel panel_4;
/**
* Mtodo principal que lanza la aplicacin */
public static void main(String[] args) {
//Preparar la tarea que debe ejecutarse en el Event Dispath Thread y que mostrar la ventana EventQueue.invokeLater(new Runnable() {
public void run() {
try { UsoBorderLayout frame = new UsoBorderLayout();
frame.setVisible(true);
} catch (Exception e) { e.printStackTrace();
}
} });
}
/**
* Construye una nueva ventana
*/ public UsoBorderLayout() {
jbInit(); }
/**
* Inicializa y personaliza los componentes del GUI. * La ventana contiene un panel de color MAGENTA posiconado con la propiedad NORTH, un panel rojo posicionado
con la propiedad EAST, un panel cyan posicionado con la propiedad WEST, un panel naranja posicionado con la propiedad SOUTH
y un ultimpo panel posicionado con la propiedad CENTER * Si se redimenciona la ventana el panel CENTER se redimensionara a lo ancho y a lo alto, los paneles NORTH y
SOUTH se redimensionarn a lo ancho y los paneles EAST y WEST se redimensionarn a lo alto
*/ private void jbInit() {
//Establecer ttulo para la ventana
setTitle("Ventana"); //Establecer tamao inicial de la ventana
setSize(new Dimension(500, 400));
//Establecer opcin de salida por defecto => Salir de la aplicacin al cerrar la ventana setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//Mostrar la ventana centrada en la pantalla
setLocationRelativeTo(null);
//Generar panel NORTH, con color de fondo magenta y que ocupar 100 pixeles de altura y toda la anchura
del componente que lo contiene. Aparecer en la parte inferior this.panel = new JPanel();
this.panel.setBackground(Color.MAGENTA);
//Establecer tamao del panel NORTH. La altura ser fija, pero la anchura ser ignorada, ya que se ajustar en anchura al elemento padre
this.panel.setPreferredSize(new Dimension(10, 100));
//Aadir el panel al componente principal de la ventana especificando la propiedad NORTH para que se posicione correctamente
getContentPane().add(this.panel, BorderLayout.NORTH);
//Generar panel EAST, con color de fondo rojo y que ocupar 20 pixeles de anchura y toda la altura del
componente que lo contiene. Aparecer en la parte derecha
this.panel_1 = new JPanel(); this.panel_1.setBackground(Color.RED);
//Establecer tamao del panel EAST. La anchura ser fija, pero la altura ser ignorada, ya que se ajustar en
altura al elemento padre this.panel_1.setPreferredSize(new Dimension(20, 10));
//Aadir el panel al componente principal de la ventana especificando la propiedad EAST para que se
posicione correctamente getContentPane().add(this.panel_1, BorderLayout.EAST);
//Generar panel WEST, con color de fondo cyan y que ocupar 30 pixeles de anchura y toda la altura del componente que lo contiene. Aparecer en la parte izquierda
this.panel_2 = new JPanel();
this.panel_2.setBackground(Color.CYAN); //Establecer tamao del panel WEST. La anchura ser fija, pero la altura ser ignorada, ya que se ajustar en
altura al elemento padre
this.panel_2.setPreferredSize(new Dimension(30, 10)); //Aadir el panel al componente principal de la ventana especificando la propiedad WEST para que se
posicione correctamente
-
Diseo y realizacin de servicios de presentacin de entornos grficos.
Cuaderno de Prcticas 2013/2014 Colegio Montessori Bloque: JAVA
getContentPane().add(this.panel_2, BorderLayout.WEST);
//Generar panel SOUTH, con color de fondo naranja y que ocupar 10 pixeles de altura y toda la anchura del componente que lo contiene. Aparecer en la parte inferior
this.panel_3 = new JPanel();
this.panel_3.setBackground(Color.ORANGE); //Establecer tamao del panel SOUTH. La altura ser fija, pero la anchura ser ignorada, ya que se ajustar en
anchura al elemento padre
this.panel_3.setPreferredSize(new Dimension(10, 10)); //Aadir el panel al componente principal de la ventana especificando la propiedad SOUTH para que se
posicione correctamente
getContentPane().add(this.panel_3, BorderLayout.SOUTH);
//Generar panel CENTER, con color de fondo amarillo y que ocupar todo el espacio libre en el componente
que lo contiene this.panel_4 = new JPanel();
this.panel_4.setBackground(Color.YELLOW);
//Aadir el panel al componente principal de la ventana especificando la propiedad CENTER para que se posicione correctamente
getContentPane().add(this.panel_4, BorderLayout.CENTER);
}
}
Card Layout
import java.awt.Dimension; import java.awt.EventQueue;
import javax.swing.JFrame;
import java.awt.CardLayout;
import java.awt.BorderLayout; import javax.swing.JComboBox;
import javax.swing.DefaultComboBoxModel;
import javax.swing.JPanel; import javax.swing.JLabel;
import javax.swing.JButton;
import javax.swing.JTextField;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
/**
* Prepara y muestra una ventana donde se muestra el funcionamiento de un CardLayout
* El CardLayout nos permite agregar a un contenedor varios elementos, pero slo uno de ellos se mostrar a la vez. * Cada uno de esos elementos tiene asociada una clave que lo identifica y que no puede repetirse, y mediante otro tipo de
componentes auxiliares iremos cambiando el elemento del CardLayout que se muestra en cada momento.
* En este ejemplo se usa una lista desplegable que va conmutando entre una etiqueta, un cuadro de texto y un botn cada vez que se cambia la opcin seleccionada en dicha lista.
* Normalmente un contenedor cuyos elementos son manejados por un CardLayout se usa para aadir otros contenedores con sus
respectivos layouts, aunque en el ejemplo se ha simplificado a tres componentes bsicos */
public class UsoCardLayout extends JFrame {
private JComboBox comboBox;
private JPanel panel;
private JLabel lblNewLabel; private JButton btnNewButton;
private JTextField textField;
/**
* Mtodo principal que lanza la aplicacin
*/ public static void main(String[] args) {
//Preparar la tarea que debe ejecutarse en el Event Dispath Thread y que mostrar la ventana
EventQueue.invokeLater(new Runnable() { public void run() {
try {
UsoCardLayout frame = new UsoCardLayout(); frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace(); }
}
});
-
Diseo y realizacin de servicios de presentacin de entornos grficos.
Cuaderno de Prcticas 2013/2014 Colegio Montessori Bloque: JAVA
}
/** * Construye una nueva ventana
*/
public UsoCardLayout() { jbInit();
}
/** * Inicializa y personaliza los componentes del GUI.
* La ventana muestra una lista desplegable que al cambiar la opcin seleccionada cambia lo que se muestra en otro panel
contenedor */
private void jbInit() {
//Establecer ttulo para la ventana setTitle("Ventana");
//Establecer tamao inicial de la ventana
setSize(new Dimension(500, 400)); //Establecer opcin de salida por defecto => Salir de la aplicacin al cerrar la ventana
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//Mostrar la ventana centrada en la pantalla
setLocationRelativeTo(null);
//Establecer un BorderLayout como layout del contenedor principal, para aadir un desplebagle arriba y otro panel que ocupe el resto del espacio
getContentPane().setLayout(new BorderLayout());
//Aadir un combobox a la parte superior del contenedor principal, de una altura de 40 pxeles y con tres
opciones this.comboBox = new JComboBox();
//Aadir a la lista el manejador de eventos que nos permitir cambiar lo que se muestra en el CardLayout
this.comboBox.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) {
comboBox_ActionPerformed(e);
} });
//Especificar las opciones a mostrar en la lista, que a su vez son las claves de cada uno de los elementos
gestionados por el CardLayout this.comboBox.setModel(new DefaultComboBoxModel(new String[] {"Panel con etiqueta", "Panel con
boton", "Panel con cuadro de texto"}));
//Establecer el tamao del desplegable para especificar la altura. this.comboBox.setPreferredSize(new Dimension(28, 40));
getContentPane().add(this.comboBox, BorderLayout.NORTH);
//Aadir al contenedor principal un nuevo panel ocupando el espacio libre
this.panel = new JPanel();
getContentPane().add(this.panel, BorderLayout.CENTER); //Al nuevo panel le aadimos un CardLayout para manejar su contenido
this.panel.setLayout(new CardLayout());
//Aadir al nuevo panel una etiqueta y especificar la clave "Panel de etiqueta"
this.lblNewLabel = new JLabel("New label");
this.panel.add(this.lblNewLabel, "Panel con etiqueta");
//Aadir al nuevo panel un botn y especificar la clave "Panel de botn"
this.btnNewButton = new JButton("New button"); this.panel.add(this.btnNewButton, "Panel con boton");
//Aadir al nuevo panel un cuadro de texto y especificar la clave "Panel de cuadro de texto" this.textField = new JTextField();
this.panel.add(this.textField, "Panel con cuadro de texto");
}
/**
* Cambia el elemento mostrado en el panel gestionado por el CardLayout cada vez que se cambia la opcin seleccionada en la lista desplegable
* @param e Objeto asociado al ActionEvent
*/ protected void comboBox_ActionPerformed(ActionEvent e) {
//Extraer el nuevo elemento seleccionado en la lista desplegable que a su vez es la clave del elemento que se
va a mostrar String key = this.comboBox.getSelectedItem().toString();
//Obtener el objeto del CardLayout del panel que lo contiene, haciendo una conversin de tipo previa
CardLayout layout = (CardLayout) this.panel.getLayout(); //Una vez tenemos el CardLayout le decimos qu elemento debe mostrar especificndole el contenedor de
dicho elemento y su clave
-
Diseo y realizacin de servicios de presentacin de entornos grficos.
Cuaderno de Prcticas 2013/2014 Colegio Montessori Bloque: JAVA
layout.show(this.panel, key); }
}
Flow Layout
import java.awt.Dimension; import java.awt.EventQueue;
import javax.swing.JFrame;
import java.awt.FlowLayout;
import javax.swing.JButton;
/**
* Prepara y muestra una ventana cuyo contenedor principal es manejado por un FlowLayout * El FlowLayout hace que los elementos posicionados dentro del contenedor "fluyan" en su interior, aadindose uno detrs de otro
hasta que no caben ms en una linea y saltan a la siguiente.
* Se puede hacer que los componentes fuyan de izquierda a derecha hasta completar una fila, de izquierda a derecha hasta completar una fila o desde el centro hacia los extremos.
* Tambin se puede especificar qu separacin queremos que haya entre los elementos, tanto entre los elementos de una misma fila
como con las filas anteriores y posteriores * Si el contenedor manejado por un FlowLayout es redimensionado, los elementos en su interior se recolocan para que siempre se
complete la anchura de una fila antes de que dichos componentes salten a la siguiente
*/ public class UsoFlowLayout extends JFrame {
private JButton btnNewButton;
private JButton btnNewButton_1;
private JButton btnNewButton_2; private JButton btnNewButton_3;
private JButton btnNewButton_4;
/**
* Mtodo principal que lanza la aplicacin
*/ public static void main(String[] args) {
//Preparar la tarea que debe ejecutarse en el Event Dispath Thread y que mostrar la ventana
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
UsoFlowLayout frame = new UsoFlowLayout(); frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace(); }
}
}); }
/** * Construye una nueva ventana
*/
public UsoFlowLayout() { jbInit();
}
/** * Inicializa y personaliza los componentes del GUI.
* La ventana contiene cinco botones. Dichos botones aparecen flotando uno detrs de otro desde el centro del
contenedor principal hacia los lados. Si se reduce el tamao de la ventana, los botones que no quepan en la primera fila saltarn a la siguiente repitiendo el mismo comportamiento
*/
private void jbInit() { //Establecer ttulo para la ventana
setTitle("Ventana");
//Establecer tamao inicial de la ventana setSize(new Dimension(500, 400));
//Establecer opcin de salida por defecto => Salir de la aplicacin al cerrar la ventana
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //Mostrar la ventana centrada en la pantalla
setLocationRelativeTo(null);
//Aadir el FlowLayout al contenedor principal, especificando que los componentes en su interior deben de
fluir desde el centro hacia los extremos y con una separacin de 5 pxeles entre los componentes a los dos lados y 30 pxeles arriba y
abajo
-
Diseo y realizacin de servicios de presentacin de entornos grficos.
Cuaderno de Prcticas 2013/2014 Colegio Montessori Bloque: JAVA
// Los valores para FloeLayout. son: CENTER, LEFT, RIGHT, TRAILING, LEADING getContentPane().setLayout(new FlowLayout(FlowLayout.CENTER, 5, 30));
//Generar el botn que aparecer en primer lugar, y aadirlo al panel contenedor sin especificar nada ms. El
layout se encargar de posicionarlo
this.btnNewButton = new JButton("Botn"); getContentPane().add(this.btnNewButton);
//Generar el botn que aparecer en segundo lugar, y aadirlo al panel contenedor sin especificar nada ms. El layout se encargar de posicionarlo
this.btnNewButton_1 = new JButton("Botn 1");
getContentPane().add(this.btnNewButton_1);
//Generar el botn que aparecer en tercer lugar, y aadirlo al panel contenedor sin especificar nada ms. El
layout se encargar de posicionarlo this.btnNewButton_2 = new JButton("Botn 2");
getContentPane().add(this.btnNewButton_2);
//Generar el botn que aparecer en cuarto lugar, y aadirlo al panel contenedor sin especificar nada ms. El
layout se encargar de posicionarlo
this.btnNewButton_3 = new JButton("Botn 3");
getContentPane().add(this.btnNewButton_3);
//Generar el botn que aparecer en quinto lugar, y aadirlo al panel contenedor sin especificar nada ms. El layout se encargar de posicionarlo
this.btnNewButton_4 = new JButton("Botn 4"); getContentPane().add(this.btnNewButton_4);
}
}
Grid Layout
import java.awt.Dimension; import java.awt.EventQueue;
import javax.swing.JFrame;
import java.awt.GridLayout;
import javax.swing.JButton;
/**
* Prepara y muestra una ventana cuyo contenedor principal es manejado por un GridLayout * El GridLayout nos permite dividir el contenedor en un nmero definido de filas y columnas, repartiendo todo el espacio
disponible por igual entre el nmero de celdas resultante.
* Una vez especificadas las filas y columnas necesarias, todos los elementos aadidos al contenedor se irn posicionando en las celdas resultantes en orden, ocupando todo el epsacio en dicha celda.
* Si el contenedor es redimensionado, todos los elementos en las celdas se redimensionarn de forma proporcional
*/ public class UsoGridLayout extends JFrame {
private JButton btnNewButton; private JButton btnNewButton_1;
private JButton btnNewButton_2;
private JButton btnNewButton_3; private JButton btnNewButton_4;
private JButton btnNewButton_5;
/**
* Mtodo principal que lanza la aplicacin
*/ public static void main(String[] args) {
//Preparar la tarea que debe ejecutarse en el Event Dispath Thread y que mostrar la ventana
EventQueue.invokeLater(new Runnable() { public void run() {
try {
UsoGridLayout frame = new UsoGridLayout(); frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace(); }
}
}); }
/**
-
Diseo y realizacin de servicios de presentacin de entornos grficos.
Cuaderno de Prcticas 2013/2014 Colegio Montessori Bloque: JAVA
* Construye una nueva ventana */
public UsoGridLayout() { jbInit();
}
/** * Inicializa y personaliza los componentes del GUI.
*/
private void jbInit() { //Establecer ttulo para la ventana
setTitle("Ventana");
//Establecer tamao inicial de la ventana setSize(new Dimension(500, 400));
//Establecer opcin de salida por defecto => Salir de la aplicacin al cerrar la ventana
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //Mostrar la ventana centrada en la pantalla
setLocationRelativeTo(null);
//Aadir el GridLayout al contenedor principal, especificando que queremos que tenga tres filas y tres
columnas, y que la separacin entre las celdas resultantes sea de 10 pxeles en horizontal y en vertical
getContentPane().setLayout(new GridLayout(3, 3, 10, 10));
//Generar el primer botn y aadirlo al contenedor manejado por el GridLayout
this.btnNewButton = new JButton("Botn 1"); getContentPane().add(this.btnNewButton);
//Generar el segundo botn y aadirlo al contenedor manejado por el GridLayout
this.btnNewButton_1 = new JButton("Botn 2");
getContentPane().add(this.btnNewButton_1);
//Generar el tercer botn y aadirlo al contenedor manejado por el GridLayout
this.btnNewButton_2 = new JButton("Botn 3"); getContentPane().add(this.btnNewButton_2);
//Generar el cuarto botn y aadirlo al contenedor manejado por el GridLayout this.btnNewButton_3 = new JButton("Botn 4");
getContentPane().add(this.btnNewButton_3);
//Generar el quinto botn y aadirlo al contenedor manejado por el GridLayout
this.btnNewButton_4 = new JButton("Botn 5");
getContentPane().add(this.btnNewButton_4);
//Generar el sexto botn y aadirlo al contenedor manejado por el GridLayout
this.btnNewButton_5 = new JButton("Botn 6"); getContentPane().add(this.btnNewButton_5);
}
}
Box Layout import java.awt.Dimension; import java.awt.EventQueue;
import javax.swing.JFrame;
import javax.swing.BoxLayout; import javax.swing.JButton;
import java.awt.Component;
/**
* Prepara y muestra una ventana cuyo contenedor principal es manejado por un BoxLayout
* El BoxLayout ordenar posicionar elementos dentro de su contenedor bien apilados uno encima de otro o bien en una fila * Tambin nos permite definir la alineacin de cada una de las filas, y se queremos que los componentes ocupen todo el espacio
disponible dentro de una fila o no
*/ public class UsoBoxLayout extends JFrame {
private JButton btnNewButton;
private JButton btnNewButton_1; private JButton btnNewButton_2;
/** * Mtodo principal que lanza la aplicacin
*/
public static void main(String[] args) { //Preparar la tarea que debe ejecutarse en el Event Dispath Thread y que mostrar la ventana
EventQueue.invokeLater(new Runnable() {
-
Diseo y realizacin de servicios de presentacin de entornos grficos.
Cuaderno de Prcticas 2013/2014 Colegio Montessori Bloque: JAVA
public void run() { try {
UsoBoxLayout frame = new UsoBoxLayout(); frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace(); }
}
}); }
/** * Construye una nueva ventana
*/
public UsoBoxLayout() { jbInit();
}
/** * Inicializa y personaliza los componentes del GUI.
* En la ventana aparecen tres botones alineados en el centro del contenedor principal y de arriba abajo
*/
private void jbInit() {
//Establecer ttulo para la ventana
setTitle("Ventana"); //Establecer tamao inicial de la ventana
setSize(new Dimension(500, 400)); //Establecer opcin de salida por defecto => Salir de la aplicacin al cerrar la ventana
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//Mostrar la ventana centrada en la pantalla setLocationRelativeTo(null);
//Establecer el BoxLayout para que maneje el contenedor principal de esta ventana. Especificamos que queremos que los elementos se concatenen en el eje de las Y, es decir, que aparezcan apilados
getContentPane().setLayout(new BoxLayout(getContentPane(), BoxLayout.Y_AXIS));
//Aadimos el primer botn al contenedor manejado por el BoxLayout. No hay que especificar nada ms
this.btnNewButton = new JButton("Botn 1");
this.btnNewButton.setAlignmentX(Component.CENTER_ALIGNMENT); getContentPane().add(this.btnNewButton);
//Aadimos el segundo botn al contenedor manejado por el BoxLayout. No hay que especificar nada ms this.btnNewButton_1 = new JButton("Botn 2");
this.btnNewButton_1.setAlignmentX(Component.CENTER_ALIGNMENT);
getContentPane().add(this.btnNewButton_1);
//Aadimos el tercer botn al contenedor manejado por el BoxLayout. No hay que especificar nada ms
this.btnNewButton_2 = new JButton("Botn 3"); this.btnNewButton_2.setAlignmentX(Component.CENTER_ALIGNMENT);
getContentPane().add(this.btnNewButton_2);
}
}
JSplitPane
import java.awt.BorderLayout;
import java.awt.EventQueue;
import javax.swing.JFrame;
import javax.swing.JPanel; import javax.swing.border.EmptyBorder;
import javax.swing.JSplitPane;
import javax.swing.JList; import java.awt.Dimension;
import javax.swing.AbstractListModel;
import java.awt.CardLayout; import javax.swing.JLabel;
import javax.swing.event.ListSelectionListener;
import javax.swing.event.ListSelectionEvent;
/**
* El JSplitPane es un tipo de contenedor especial que permite agregarle nicamente dos elementos, dividiendo el espacio entre los dos y aadiendo una linea de divisin en medio que es redimensionable
* Cuando se arrastra dicha linea de divisin uno de los componentes aumenta de tamao y el otro disminuye. El espacio se puede
dividir en horizontal o en vertical
-
Diseo y realizacin de servicios de presentacin de entornos grficos.
Cuaderno de Prcticas 2013/2014 Colegio Montessori Bloque: JAVA
*/ public class UsoJSplitPane extends JFrame {
private JSplitPane splitPane; private JList list;
private JPanel cardLayoutPanel;
private JPanel panel_1; private JLabel lblEsteEsEl;
private JPanel panel_2;
private JLabel lblEsteEsEl_1; private JPanel panel_3;
private JLabel lblEsteEsEl_2;
/**
* Mtodo principal que lanza la aplicacin
*/ public static void main(String[] args) {
//Preparar la tarea que debe ejecutarse en el Event Dispath Thread y que mostrar la ventana
EventQueue.invokeLater(new Runnable() { public void run() {
try {
UsoJSplitPane frame = new UsoJSplitPane();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace(); }
} });
}
/**
* Construye una nueva ventana
*/ public UsoJSplitPane() {
jbInit();
} /**
* Inicializa y personaliza los componentes del GUI.
* En la ventana aparece un JSplitPane con una lista en la parte izquierda y un panel en la derecha. Dentro del panel de la derecha y otros paneles, y al seleccionar una opcin en la lista de la derecha, se va conmutando entre los distintos subpaneles
*/
private void jbInit() { //Establecer ttulo para la ventana
setTitle("Ventana");
//Establecer tamao inicial de la ventana setSize(new Dimension(500, 400));
//Establecer opcin de salida por defecto => Salir de la aplicacin al cerrar la ventana
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //Mostrar la ventana centrada en la pantalla
setLocationRelativeTo(null);
//Establecer un BorderLayout como layout del panel principal getContentPane().setLayout(new BorderLayout(0, 0));
//Generar el JSplitPane y aadirlo al centro del panel principal this.splitPane = new JSplitPane();
getContentPane().add(this.splitPane, BorderLayout.CENTER);
//Generar una lista que aparecer en la parte izquierda del JSplitPane
this.list = new JList();
this.list.addListSelectionListener(new ListSelectionListener() { public void valueChanged(ListSelectionEvent arg0) {
list_valueChanged(arg0);
} });
//Rellenar la lista
this.list.setModel(new AbstractListModel() { String[] values = new String[] {"Panel 1", "Panel 2", "Panel 3"};
public int getSize() {
return values.length; }
public Object getElementAt(int index) {
return values[index]; }
});
//Establecer el tamao inicial de la lista, lo que har que el divisor del JSplitPane aparezca en esa posicin this.list.setPreferredSize(new Dimension(150, 0));
this.splitPane.setLeftComponent(this.list);
-
Diseo y realizacin de servicios de presentacin de entornos grficos.
Cuaderno de Prcticas 2013/2014 Colegio Montessori Bloque: JAVA
//Aadir un panel a la parte derecha del JSplitPane y agregarle un CardLayout
this.cardLayoutPanel = new JPanel(); this.splitPane.setRightComponent(this.cardLayoutPanel);
this.cardLayoutPanel.setLayout(new CardLayout(0, 0));
//Agregar un panel al panel de la derecha manejado por el CardLayout. Especificar una clave nica
this.panel_1 = new JPanel();
this.cardLayoutPanel.add(this.panel_1, "Panel 1"); this.panel_1.setLayout(null);
//Aadir una etiqueta al primero de los paneles de la derecha
this.lblEsteEsEl = new JLabel("Este es el panel 1"); this.lblEsteEsEl.setBounds(62, 121, 125, 28);
this.panel_1.add(this.lblEsteEsEl);
//Agregar un segundo panel al panel de la derecha manejado por el CardLayout. Especificar una clave nica
this.panel_2 = new JPanel();
this.cardLayoutPanel.add(this.panel_2, "Panel 2"); //Agregar una etiqueta al segundo panel de la derecha
this.lblEsteEsEl_1 = new JLabel("Este es el panel 2");
this.panel_2.add(this.lblEsteEsEl_1);
//Agregar un tercer panel al panel de la derecha manejado por el CardLayout. Especificar una clave nica
this.panel_3 = new JPanel(); this.cardLayoutPanel.add(this.panel_3, "Panel 3");
this.panel_3.setLayout(new BorderLayout(0, 0)); //Agregar una etiqueta al tercer panel de la derecha
this.lblEsteEsEl_2 = new JLabel("Este es el panel 3");
this.panel_3.add(this.lblEsteEsEl_2, BorderLayout.CENTER); }
/** * Cada vez que se cambia el elemento seleccionado en la lista, se carga el panel correspondiente
* @param arg0
*/ private void list_valueChanged(ListSelectionEvent arg0) {
String key = this.list.getSelectedValue().toString();
CardLayout layout = (CardLayout) this.cardLayoutPanel.getLayout(); layout.show(this.cardLayoutPanel, key);
}
}
JTablePane
import java.awt.BorderLayout; import java.awt.Dimension;
import java.awt.EventQueue;
import javax.swing.JFrame;
import javax.swing.JPanel; import javax.swing.border.EmptyBorder;
import javax.swing.JTabbedPane;
import javax.swing.ImageIcon; import javax.swing.JLabel;
import javax.swing.JButton;
import java.awt.FlowLayout; import javax.swing.JTextField;
/** * Prepara y muestra una ventana en la que aparece como contenedor principal un JTabbedPane.
* El JTabbedPane es un contenedor que permite agrupar sus componentes en pestaas. Normalmente a cada una de las pestaas se
le agrega otro contenedor con ms componentes * Las pestaas pueden mostrarse en cualquier posicin (arriba, abajo, izquierda o derecha) y pueden tener texto, imagen o ambos a
la vez.
*/ public class UsoJTabbedPane extends JFrame {
private JTabbedPane tabbedPane;
private JPanel panel; private JPanel panel_1;
private JPanel panel_2;
private JLabel lblPrimeraPestaa; private JButton btnNewButton;
private JButton btnNewButton_1;
private JTextField textField;
-
Diseo y realizacin de servicios de presentacin de entornos grficos.
Cuaderno de Prcticas 2013/2014 Colegio Montessori Bloque: JAVA
/**
* Mtodo principal que lanza la aplicacin */
public static void main(String[] args) {
//Preparar la tarea que debe ejecutarse en el Event Dispath Thread y que mostrar la ventana EventQueue.invokeLater(new Runnable() {
public void run() {
try { UsoJTabbedPane frame = new UsoJTabbedPane();
frame.setVisible(true);
} catch (Exception e) { e.printStackTrace();
}
} });
}
/**
* Construye una nueva ventana
*/
public UsoJTabbedPane() {
jbInit();
} /**
* Inicializa y personaliza los componentes del GUI. * La ventana contiene un panel de color MAGENTA posiconado con la propiedad NORTH, un panel rojo posicionado
con la propiedad EAST, un panel cyan posicionado con la propiedad WEST, un panel naranja posicionado con la propiedad SOUTH
y un ultimpo panel posicionado con la propiedad CENTER * Si se redimenciona la ventana el panel CENTER se redimensionara a lo ancho y a lo alto, los paneles NORTH y
SOUTH se redimensionarn a lo ancho y los paneles EAST y WEST se redimensionarn a lo alto
*/ private void jbInit() {
//Establecer ttulo para la ventana
setTitle("Ventana"); //Establecer tamao inicial de la ventana
setSize(new Dimension(500, 400));
//Establecer opcin de salida por defecto => Salir de la aplicacin al cerrar la ventana setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//Mostrar la ventana centrada en la pantalla
setLocationRelativeTo(null);
//Aadir un BorderLayout como el layout del contenedor principal
getContentPane().setLayout(new BorderLayout(0, 0)); //Aadir el JTabbedPane al contenedor principal y especificar que queremos que las pestaas aparezcan abajo
this.tabbedPane = new JTabbedPane(JTabbedPane.BOTTOM);
getContentPane().add(this.tabbedPane, BorderLayout.CENTER);
//Generar un nuevo JPanel y agregarlo como primera pestaa con el texto y el icono especificados
this.panel = new JPanel(); this.tabbedPane.addTab("Primera pestaa", new
ImageIcon(UsoJTabbedPane.class.getResource("/javax/swing/plaf/metal/icons/ocean/error.png")), this.panel, null);
this.panel.setLayout(null); //Agregar una etiqueta al panel de la primera pestaa con posicionamiento absoluto
this.lblPrimeraPestaa = new JLabel("Primera pestaa");
this.lblPrimeraPestaa.setBounds(99, 71, 128, 21); this.panel.add(this.lblPrimeraPestaa);
//Agregar un botn al panel de la primera pestaa con posicionamiento absoluto
this.btnNewButton = new JButton("New button"); this.btnNewButton.setBounds(280, 203, 89, 23);
this.panel.add(this.btnNewButton);
//Generar otro panel y agregarlo como segunda pestaa con el texto y el ToolTip especificados
this.panel_1 = new JPanel();
this.tabbedPane.addTab("Segunda pestaa", null, this.panel_1, "Este es el ToolTip de la segunda pestaa"); this.panel_1.setLayout(new FlowLayout(FlowLayout.CENTER, 5, 5));
//Generar un botn y agregarlo a la segunda pestaa
this.btnNewButton_1 = new JButton("Botn"); this.panel_1.add(this.btnNewButton_1);
//Generar un ultimo panel y agregarlo como tercera pestaa con la imagene especificada y sin texto this.panel_2 = new JPanel();
this.tabbedPane.addTab(null, new
ImageIcon(UsoJTabbedPane.class.getResource("/javax/swing/plaf/metal/icons/ocean/info.png")), this.panel_2, null); this.panel_2.setLayout(new BorderLayout(0, 0));
//Agregar un campo de texto al panel de la tercera pestaa
-
Diseo y realizacin de servicios de presentacin de entornos grficos.
Cuaderno de Prcticas 2013/2014 Colegio Montessori Bloque: JAVA
this.textField = new JTextField(); this.textField.setText("Tercera pestaa");
this.panel_2.add(this.textField, BorderLayout.CENTER); }
}
JScrollPane
import java.awt.BorderLayout; import java.awt.Dimension;
import java.awt.EventQueue;
import javax.swing.JFrame;
import javax.swing.JScrollPane; import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;
/**
* Prepara y muestra una ventana en la que se muestra un JScrollPane.
* El JScrollPane nos permite incluir un componente que sea ms grande que el contenedor, y mediante barras de scroll desplazarnos
por su contenido.
* Es muy frecuente el uso de los JScrollPane junto con tablas o listas cuyo contenido sabemos que puede crecer por encima del
tamao de su contenedor, pero se puede usar con cualquier tipo de contenido. * Adems, cuando se usoa junto con una tabla, es el propio JScrollPane el que muestra las cabeceras de dicha tabla, mantenindolas
siempre visibles aunque hagamos scroll
*/ public class UsoJScrollPane extends JFrame {
private JScrollPane scrollPane;
private JTable table;
/**
* Mtodo principal que lanza la aplicacin */
public static void main(String[] args) {
//Preparar la tarea que debe ejecutarse en el Event Dispath Thread y que mostrar la ventana EventQueue.invokeLater(new Runnable() {
public void run() {
try { UsoJScrollPane frame = new UsoJScrollPane();
frame.setVisible(true);
} catch (Exception e) { e.printStackTrace();
}
} });
}
/**
* Construye una nueva ventana */
public UsoJScrollPane() {
jbInit(); }
/**
* Inicializa y personaliza los componentes del GUI. * Muestra una ventana con una tabla con muchas filas. Si la ventana es demasiado pequea como para mostrarlas todas,
el JScrollPane hace su trabajo, cargando una barra de desplazamiento que nos permite ver el contenido que queda fuera.
*/
private void jbInit() {
//Establecer ttulo para la ventana
setTitle("Ventana"); //Establecer tamao inicial de la ventana
setSize(new Dimension(500, 400));
//Establecer opcin de salida por defecto => Salir de la aplicacin al cerrar la ventana setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//Mostrar la ventana centrada en la pantalla
setLocationRelativeTo(null);
//Aadir un BorderLayout al contenedor principal
getContentPane().setLayout(new BorderLayout(0, 0));
//Generar un JScrollPane y aadirlo al contenedor principal
this.scrollPane = new JScrollPane(); getContentPane().add(this.scrollPane, BorderLayout.CENTER);
-
Diseo y realizacin de servicios de presentacin de entornos grficos.
Cuaderno de Prcticas 2013/2014 Colegio Montessori Bloque: JAVA
//Generar una tabla y aadirla al JScrollPane. La aadimos con el mtodo setViewportView, que lo que hace es especificar que la tabla va a ser el elemento del JScrollPane que se desplace con las barras de scroll
this.table = new JTable(); this.scrollPane.setViewportView(this.table);
generateTableContent(); //Rellenar la tabla con contenido al azar }
//Genera las filas que van dentro de la tabla private void generateTableContent() {
Object[] headers = new Object[] {"Columna 1", "Columna 2", "Columna 3", "Columna 4"}; //Vamos a
generar una tabla con 4 columnas
//Generamos una tabla de 30 filas, de forma que si aumentamos el tamao de la ventana vemos que la barra de
desplazamiento de la tabla desaparece Object[][] content = new Object[30][4];
for(int i = 0; i < 30; i++) {
for(int j = 0; j < 4; j++) { content[i][j] = "Celda [" + (i + 1) + ", " + (j + 1) + "]";
}
}
((DefaultTableModel) this.table.getModel()).setDataVector(content, headers);
}
}
JavaxSwing import java.awt.BorderLayout; import java.awt.Color;
import java.awt.Dimension; import java.awt.EventQueue;
import java.awt.Font;
import javax.swing.ButtonGroup;
import javax.swing.JFrame;
import javax.swing.JTabbedPane; import javax.swing.JPanel;
import javax.swing.ImageIcon; import javax.swing.JComboBox;
import java.awt.CardLayout;
import javax.swing.JButton; import javax.swing.border.TitledBorder;
import javax.swing.JRadioButton;
import javax.swing.BoxLayout; import java.awt.Component;
import javax.swing.JCheckBox;
import java.awt.GridLayout; import javax.swing.DefaultComboBoxModel;
import javax.swing.JSlider;
import javax.swing.JScrollPane; import javax.swing.JTextArea;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent; import javax.swing.event.ChangeListener;
import javax.swing.event.ChangeEvent;
import javax.swing.JSplitPane; import javax.swing.JList;
import javax.swing.AbstractListModel;
import javax.swing.event.ListSelectionListener;
import javax.swing.event.ListSelectionEvent;
import javax.swing.ListSelectionModel;
/**
* Prepara y muestra una ventana con varios componentes del package javax.swing
*/ public class UsoJavaxSwing extends JFrame {
private JTabbedPane tabbedPane;
private JPanel panel; private JPanel panel_1;
private JPanel cardLayoutPanel;
private JComboBox comboBox; private JPanel panel_3;
private JPanel gridLayoutPanel;
private JPanel borderLayoutPanel;
private JButton btnHola;
-
Diseo y realizacin de servicios de presentacin de entornos grficos.
Cuaderno de Prcticas 2013/2014 Colegio Montessori Bloque: JAVA
private JPanel panel_6; private ButtonGroup group;
private JRadioButton rdbtnNewRadioButton; private JRadioButton rdbtnNewRadioButton_1;
private JRadioButton rdbtnNewRadioButton_2;
private JCheckBox chckbxNewCheckBox; private JButton btnNewButton;
private JButton btnNewButton_1;
private JButton btnNewButton_2; private JButton btnNewButton_3;
private JSlider slider;
private JScrollPane scrollPane; private JTextArea textArea;
private JPanel panel_2;
private JSplitPane splitPane; private JScrollPane scrollPane_1;
private JList list;
private JPanel panelBackground;
/**
* Mtodo principal que lanza la aplicacin
*/
public static void main(String[] args) {
//Preparar la tarea que debe ejecutarse en el Event Dispatch Thread y que mostrar la ventana EventQueue.invokeLater(new Runnable() {
public void run() { try {
UsoJavaxSwing frame = new UsoJavaxSwing();
frame.setVisible(true); } catch (Exception e) {
e.printStackTrace();
} }
});
}
/**
* Construye una nueva ventana */
public UsoJavaxSwing() {
jbInit(); }
/**
* Inicializa y personaliza los componentes del GUI. */
private void jbInit() {
//Establecer ttulo para la ventana setTitle("Ventana");
//Establecer tamao inicial de la ventana
setSize(new Dimension(757, 492)); //Establecer opcin de salida por defecto => Salir de la aplicacin al cerrar la ventana
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//Mostrar la ventana centrada en la pantalla setLocationRelativeTo(null);
//Aadir un BorderLayout que maneje el contenedor principal getContentPane().setLayout(new BorderLayout(0, 0));
//Crear un panel de pestaas (JTabbedPane) y aadirlo al contenedor principal ocupando todo el espacio, ya que es el nico componente