JAVA JFreeChart Tutorial

57
Diseño y realización de servicios de presentación de entornos gráficos. Cuaderno de Prácticas 2013/2014 Colegio Montessori Bloque: JAVA Bloque: JAVA

description

Aa

Transcript of 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