JAVA JFreeChart Tutorial
JAVA JFreeChart Tutorial
JAVA JFreeChart Tutorial
Colegio Montessori
Bloque:
JAVA
Colegio Montessori
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:
Colegio Montessori
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
package paquete;
public class fuente2 {
package paquete.subpaquete;
public class fuente3 {
Colegio Montessori
* @author 2 DAM
*/
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){
Colegio Montessori
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
*/
class escribir{
escribir(String dato){
Saludar(dato);
}
private void Saludar(String saludo){
System.out.println(saludo);
}
}
Colegio Montessori
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.
Colegio Montessori
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
Colegio Montessori
pintar.java
package principal.secundario;
public class pintar{
public pintar(String dato){
System.out.println(dato);
}
}
Introduccin
Interfaces
Colegio Montessori
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 );
}
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 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
Colegio Montessori
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");
}
}
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();
}
Colegio Montessori
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();
}
}
Ejercicios resueltos
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);
}
}
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) );
Botones
package dam;
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);
}
}
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);
}
}
Colegio Montessori
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);
}
}
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);
Colegio Montessori
}
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);
}
}
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 <= (vector.length-1); i++)
cb.addItem(vector[i]);
contenedor.add(cb);
ven.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Colegio Montessori
ven.setSize(300, 200);
ven.setVisible(true);
}
java.awt.Component;
java.awt.Container;
java.awt.FlowLayout;
java.awt.Font;
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);
}
}
Colegio Montessori
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();
}
}
Colegio Montessori
import java.awt.BorderLayout;
import java.awt.Container;
import
import
import
import
javax.swing.JFrame;
javax.swing.JPanel;
javax.swing.JTree;
javax.swing.tree.DefaultMutableTreeNode;
Mens desplegables
package dai;
import java.awt.*;
import javax.swing.*;
public class EjemploVentana15 {
public static void main(String[] args) {
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
*/
Colegio Montessori
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 */
Colegio Montessori
Colegio Montessori
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();
}
}
});
Colegio Montessori
}
/**
* 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
Colegio Montessori
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
Colegio Montessori
// 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();
}
}
});
}
/**
Colegio Montessori
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() {
Colegio Montessori
public void run() {
try {
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
Colegio Montessori
*/
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);
Colegio Montessori
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;
Colegio Montessori
/**
* 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
Colegio Montessori
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);
Colegio Montessori
//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;
Colegio Montessori
Colegio Montessori
comboBox_actionPerformed(e);
}
});
//Definir las tres opciones del combobox, que mostraran un panel manejado por cada uno de los Layouts en la
lista
this.comboBox.setModel(new DefaultComboBoxModel(new String[] {"AbsoluteLayout", "GridLayout",
"BorderLayout"}));
this.comboBox.setPreferredSize(new Dimension(150, 30));
this.panel_1.add(this.comboBox);
//Generar un panel que ocupar todo el espacio restante de la primera pestaa. Le aadiremos un CardLayout
y otros tres paneles que sern conmutados mediante el combobox anterior
this.cardLayoutPanel = new JPanel();
this.panel.add(this.cardLayoutPanel, BorderLayout.CENTER);
this.cardLayoutPanel.setLayout(new CardLayout(0, 0));
//Generar un panel con el Layout a null como primero de los paneles del CardLayout. Definir una clave nica
this.panel_3 = new JPanel();
this.cardLayoutPanel.add(this.panel_3, "AbsoluteLayout");
this.panel_3.setLayout(null);
//Aadir al panel sin Layout un botn con la posicin y el tamao definidos
this.btnHola = new JButton("Hola");
this.btnHola.setBounds(61, 73, 89, 23);
this.panel_3.add(this.btnHola);
//Aadir al panel sin Layout otro panel manejado por un BoxLayout, con un borde y un ttulo en la parte
superior de dicho borde. Dentro aadiremos 3 radiobuttons
this.panel_6 = new JPanel();
this.panel_6.setBorder(new TitledBorder(null, "Grupo", TitledBorder.LEADING, TitledBorder.TOP, null,
null));
//Definir el tamao y la posicin de este panel
this.panel_6.setBounds(379, 73, 162, 142);
this.panel_3.add(this.panel_6);
this.panel_6.setLayout(new BoxLayout(this.panel_6, BoxLayout.Y_AXIS));
//Crear un grupo de botones. Necesario para que los radiobuttons sean excluyentes, sino se podran marcar
varios a la vez
this.group = new ButtonGroup();
//Generar el primero de los radiobuttons
this.rdbtnNewRadioButton = new JRadioButton("New radio button");
this.rdbtnNewRadioButton.setAlignmentX(Component.CENTER_ALIGNMENT);
this.panel_6.add(this.rdbtnNewRadioButton);
this.group.add(this.rdbtnNewRadioButton);
//Generar el segundo de los radiobuttons
this.rdbtnNewRadioButton_1 = new JRadioButton("New radio button");
this.rdbtnNewRadioButton_1.setAlignmentX(Component.CENTER_ALIGNMENT);
this.panel_6.add(this.rdbtnNewRadioButton_1);
this.group.add(this.rdbtnNewRadioButton_1);
//Generar el tercero de los radiobuttons
this.rdbtnNewRadioButton_2 = new JRadioButton("New radio button");
this.rdbtnNewRadioButton_2.setAlignmentX(Component.CENTER_ALIGNMENT);
this.panel_6.add(this.rdbtnNewRadioButton_2);
this.group.add(this.rdbtnNewRadioButton_2);
//Generar un checkbox y aadirlo al panel sin Layout
this.chckbxNewCheckBox = new JCheckBox("New check box");
this.chckbxNewCheckBox.setBounds(155, 314, 97, 23);
this.panel_3.add(this.chckbxNewCheckBox);
//Generar un panel gestionado por un GridLayout con dos filas y dos columnas, y una separacin de 5 pxeles
entre sus componentes. Aadirlo al panel del CardLayout
this.gridLayoutPanel = new JPanel();
this.cardLayoutPanel.add(this.gridLayoutPanel, "GridLayout");
this.gridLayoutPanel.setLayout(new GridLayout(2, 2, 5, 5));
//Generar 4 botones y aadirlos al panel del GridLayout
this.btnNewButton = new JButton("New button");
this.gridLayoutPanel.add(this.btnNewButton);
this.btnNewButton_2 = new JButton("New button");
this.gridLayoutPanel.add(this.btnNewButton_2);
this.btnNewButton_1 = new JButton("New button");
this.gridLayoutPanel.add(this.btnNewButton_1);
this.btnNewButton_3 = new JButton("New button");
this.gridLayoutPanel.add(this.btnNewButton_3);
//Generar un panel gestionado por un BorderLayout y aadirlo al panel del CardLayout
this.borderLayoutPanel = new JPanel();
this.cardLayoutPanel.add(this.borderLayoutPanel, "BorderLayout");
Colegio Montessori
Colegio Montessori
Colegio Montessori
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
class EventosRaton extends JFrame{
private JButton boton ;
private JTextField campoTexto ;
public EventosRaton () {
class ManipulaMouseEvent implements MouseListener {
public void mouseEntered (MouseEvent e ) {}
public void mouseExited (MouseEvent e ) {}
public void mouseClicked (MouseEvent e ) {}
public void mouseReleased (MouseEvent e ) {}
public void mousePressed (MouseEvent e )
{System.out.println(campoTexto.getText());}
}
Container cp = getContentPane() ;
cp.setLayout(new FlowLayout()) ;
cp.add(new JLabel ("Introduce precio: "));
campoTexto = new JTextField (20) ;
cp.add( campoTexto ) ;
boton=new JButton("Aceptar");
cp.add(boton);
boton.addMouseListener(new ManipulaMouseEvent ());
setSize(500 ,300);
}
public static void main ( String [] args ) {
EventosRaton ven = new EventosRaton();
ven.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
ven.setVisible(true);
}
}
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class EjemploVentana18a{
public static void main ( String [] args ) {
class EventosRaton {
private JButton boton ;
private JTextField campoTexto ;
private JLabel resultado;
public EventosRaton () {
class ManipulaMouseEvent implements MouseListener {
public void mouseEntered (MouseEvent e ) {}
public void mouseExited (MouseEvent e ) {}
public void mouseClicked (MouseEvent e ) {}
public void mouseReleased (MouseEvent e ) {}
Crear una ventana con rea de texto que visualice la tecla pulsada (incluida Enter,
Retroceso, ), tambin visualizar el cdigo de la tecla por consola.
package dai;
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
public class EventosTeclado1 {
static class EventosTeclado {
static JTextArea ta = new JTextArea();
static JTextArea ta1 = new JTextArea();//uno para escibir,
ser no editable.
static JScrollPane jsp;
static JFrame ven = new JFrame();
static Container c = new Container();
public EventosTeclado(){
class ManipulaKeyListener implements KeyListener{
public void keyTyped (KeyEvent k){}
public void keyPressed (KeyEvent k){
String letras = k.getKeyText(k.getKeyCode());
ta.append(letras + "\n");
System.out.println(letras);
}
Colegio Montessori
}
c.setLayout(null);
jsp = new JScrollPane(ta, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,
JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
ta1.setBounds(1, 1, 1, 1);
jsp.setBounds(5, 5, 200, 300);
ta1.setEditable(false);
ta.setEnabled(false);
ta1.addKeyListener(new ManipulaKeyListener());
c.add(jsp);
c.add(ta1);
ven.add(c);
ven.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
ven.setSize(220, 340);
ven.setTitle("Eventos de Taclado");
ven.setVisible(true);
}
}
public static void main (String [] args){
new EventosTeclado();
}
}
java.awt.*;
java.awt.event.*;
javax.swing.*;
java.util.Calendar;
Colegio Montessori
Ejercicios resueltos
java.io.BufferedInputStream;
java.io.BufferedOutputStream;
java.io.FileInputStream;
java.io.FileOutputStream;
Colegio Montessori
Ejercicios resueltos
5.
Colegio Montessori
7.
8.
Colegio Montessori
Oprima el botn Aceptar. Oprima a su vez los botones aceptar de las pantallas
subsecuentes. Con esto el driver ya ha sido creado y puede ser accedido desde nuestra
aplicacin.
El resultado de la creacin del driver de la base de datos que se usa en este proyecto de
ejemplo es el siguiente:
Nombre de driver: PDRV
Nombre de inicio de sesin: cvazquez
Contrasea: vazquez
Estos campos sern utilizados desde la aplicacin en Java para conectarse a la base de
datos.
La siguiente clase en Java, contiene los mtodos necesarios para conectar nuestra
aplicacin con la base de datos Access.
package jdbc01;
import java.sql.*;
import java.lang.ClassNotFoundException;
public class jdbc01_conexion_access {
public static void main(String[] args) {
try {
/*** Registro de driver y conexin a base de datos ****/
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection con = DriverManager.getConnection(
"jdbc:odbc:PDRV", "cvazquez", "vazquez");
/***** Ejecutar sentencias ********/
Statement sentencia = con.createStatement();
sentencia.executeUpdate( "INSERT INTO persona (nif, nombre)
VALUES ('76237006P', 'paco')");
ResultSet rs = sentencia.executeQuery( "SELECT nif, nombre, edad
FROM persona" );
/*** Recorrer fila a fila el resultado ****/
while ( rs.next() ) {
String res = rs.getString("nif") +" "+ rs.getString("nombre")
+ ", " + rs.getInt("edad");
System.out.println( res );
}
/*** Cerramos ***/
sentencia.close();
con.close();
}
catch( ClassNotFoundException e ) {
e.printStackTrace(); }
catch (SQLException e) {
e.printStackTrace(); }
}
}
Conexin directa con Microsoft Access a travs de JDBC (Listando los datos en
pantalla)
Colegio Montessori
package dai;
import java.sql.*;
import javax.swing.*;
import java.awt.*;
public class ConexionAccess2 {
public static void main(String[] args) {
DefaultListModel datos = new DefaultListModel();
try {
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
String db = "jdbc:odbc:Driver={Microsoft Access Driver
(*.mdb)};DBQ=C:\\centro.mdb";
Connection con = DriverManager.getConnection(db);
Statement sentencia = con.createStatement();
ResultSet rs = sentencia.executeQuery("SELECT * FROM
Alumnos");
while (rs.next()) {
datos.addElement(rs.getString("DNI") + " " +
rs.getString("nombre") + " " +
rs.getString("apellidos") + " " +
rs.getString("poblacion") + ", " +
rs.getString("provincia") + " - " +
rs.getString("cp") + "\n");
}
sentencia.close();
con.close();
} catch (Exception e) {
e.printStackTrace();
;
}
JFrame ven = new JFrame();
Container c = new Container();
c.setLayout(null);
JList lista = new JList(datos);
lista.setBounds(10,10,475,480);
c.add(lista);
ven.add(c);
ven.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
ven.setSize(500,500);
ven.setVisible(true);
}
}
Colegio Montessori
JFreeChart
Introduccin
JFreeChart es una biblioteca de cdigo abierto disponible para Java que
permite a los usuarios generar fcilmente grficos y listas. Es particularmente
eficaz para cuando un usuario necesita para generar los grficos que cambian
en un con frecuencia. En estos apuntes se estudiar la manera de crear
imgenes a partir de estas grficas que luego pueden ser visualizadas en Java.
Instalacin
1. Inicie Eclipse.
2. Ir a Archivo -> Nuevo -> Proyecto ....
3. Seleccionar "Java Project" y haga clic en Siguiente. Escriba un nombre de
proyecto y haga clic en Finalizar.
4. Seleccionar el proyecto en la vista Explorador de paquetes. Ir a Proyecto ->
Propiedades.
5. Hacer clic en "Java Build Path" en el lado izquierdo del cuadro de dilogo y
en el lado derecho hacer clic en "Bibliotecas" ficha.
6. Hacer clic en "Aadir JAR externos ..." y buscar JFreeChart-1.0.0.jar y
jcommon-1.0.0.jar. Hacer clic en Aceptar.
7. Seleccionar el proyecto en la vista Explorador de paquetes. Ir a Archivo ->
Nuevo -> Paquete. Dale el paquete un nombre y haga clic en Finalizar.
8. Seleccionar el paquete que acaba de crear en la vista Explorador de
paquetes. Ir a Archivo -> Nuevo -> Clase. dar el clase un nombre y haga clic en
Finalizar.
9. Ahora est listo para comenzar a usar la biblioteca JFreeChart!
Pie Chart
XY Chart
Bar Chart
Ejemplo
de Pie Chart:
Colegio Montessori
import org.jfree.chart.ChartFactory;
import org.jfree.data.general.DefaultPieDataset;
import java.io.File;
public class PieChartExample {
public static void main(String[] args) {
// Create a simple pie chart
try{
DefaultPieDataset pieDataset = new DefaultPieDataset();
pieDataset.setValue("A", new Integer(75));
pieDataset.setValue("B", new Integer(10));
pieDataset.setValue("C", new Integer(10));
pieDataset.setValue("D", new Integer(50));
JFreeChart chart = ChartFactory.createPieChart
("CSC408 Mark Distribution", // Ttulo
pieDataset, // Datos
true, // Mostrar leyenda
true, // Usar tooltips
false // Configurar el chart para generar URLs?
);
ChartUtilities.saveChartAsJPEG(new File("C:\\chart.jpg"), chart, 500, 300);
} catch (Exception e) {
System.out.println("Ha ocurrido un problema durante la creacin del chart.");
}
}
}
import
import
import
import
import
org.jfree.chart.*;
org.jfree.data.general.*;
java.awt.*;
java.io.File;
javax.swing.*;
Colegio Montessori
javax.swing.JFrame;
org.jfree.chart.*;
org.jfree.chart.plot.PiePlot3D;
org.jfree.data.general.*;
org.jfree.util.Rotation;
Colegio Montessori
}
}
Ejemplo XY Chart
Construir una lnea con el siguiente conjunto de (x, y) las coordenadas: {(1, 1),
(1, 2), (2, 1), (3, 9), (4, 10)}.
public class XYChartExample {
public static void main(String[] args) {
// Crear un simple XY chart
XYSeries series = new XYSeries("XYGraph");
series.add(1, 1);
series.add(1, 2);
series.add(2, 1);
series.add(3, 9);
series.add(4, 10);
// Aadir la serie para el conjunto de datos
XYSeriesCollection dataset = new XYSeriesCollection();
dataset.addSeries(series);
// Generar el grfico
JFreeChart chart = ChartFactory.createXYLineChart(
"XY Chart", // Titulo
"x-axis", // Etiqueta del eje X
"y-axis", // Etiqueta del eje y
dataset, // Datos
PlotOrientation.VERTICAL, // Orientacin
true, // Mostrar leyenda
true, // Usar tooltips
false // Configurar el chart para generar URLs?
);
try {
ChartUtilities.saveChartAsJPEG(new File("C:\\chart.jpg"), chart, 500, 300);
} catch (IOException e) {
System.err.println("Ha existido un error durante la creacin del grfico);
}
}
}
Colegio Montessori
Modificacin:
Construir un grfico de barras que compara las ganancias tomadas en por los
vendedores siguientes: Jane, Tom, Jill, John, Fred.:
public class BarChartExample {
public static void main(String[] args) {
// Crear un grfico Bar chart simple
DefaultCategoryDataset dataset = new DefaultCategoryDataset();
dataset.setValue(6, "Profit", "Jane");
dataset.setValue(7, "Profit", "Tom");
dataset.setValue(8, "Profit", "Jill");
dataset.setValue(5, "Profit", "John");
dataset.setValue(12, "Profit", "Fred");
JFreeChart chart = ChartFactory.createBarChart("Comparison between Salesman",
"Salesman", "Profit", dataset, PlotOrientation.VERTICAL,
false, true, false);
try {
ChartUtilities.saveChartAsJPEG(new File("C:\\chart.jpg"), chart, 500, 300);
} catch (IOException e) {
System.err.println("Problem occurred creating chart.");
}
}
}
Colegio Montessori
package com.dai.basedatospie.base;
import java.sql.*;
import java.util.ArrayList;
import javax.swing.JFrame;
import org.jfree.chart.*;
import org.jfree.chart.plot.PiePlot3D;
import org.jfree.data.general.*;
import org.jfree.util.Rotation;
class PieChart extends JFrame {
Colegio Montessori
private static final long serialVersionUID = 1L; //Constante que usa PeChart
public PieChart(String applicationTitle, String chartTitle) {
super(applicationTitle);
PieDataset dataset = createDataset();
JFreeChart chart = createChart(dataset, chartTitle);
ChartPanel chartPanel = new ChartPanel(chart);
chartPanel.setPreferredSize(new java.awt.Dimension(500, 270));
setContentPane(chartPanel);
}
private
PieDataset createDataset() {
ArrayList<Datos> datos;
datos = new ArrayList<Datos>();
try {
Class.forName("com.mysql.jdbc.Driver");
System.out.println("Conectando a la base...");
Connection con = DriverManager.getConnection(
"jdbc:mysql://localhost/piechart", "root",
""
);
System.out.println("Conexion a BD establecida");
Statement sentencia = con.createStatement();
ResultSet rs = sentencia.executeQuery("SELECT * FROM
datos");
while (rs.next()) {
Datos dato = new Datos();
dato.setNombre(rs.getString("nombre"));
dato.setPorcentaje(rs.getFloat("porcentaje"));
datos.add(dato);
}
sentencia.close();
con.close();
} catch (Exception e) {
e.printStackTrace();
};
DefaultPieDataset result = new DefaultPieDataset();
for(Datos dato : datos){
result.setValue(dato.getNombre(),dato.getPorcentaje());
}
return result;
}
private JFreeChart createChart(PieDataset dataset, String title) {
JFreeChart chart = ChartFactory.createPieChart3D(title,
dataset,true,true,false);
PiePlot3D plot = (PiePlot3D) chart.getPlot();
plot.setStartAngle(290); //angulo de giro del PIE respecto al eje
plot.setDirection(Rotation.ANTICLOCKWISE); // Direccin de giro del PIE, la otra
opcin es Rotation.CLOCKWISE
plot.setForegroundAlpha(0.45f); // Indica el grado del opacidad del PI siendo 1
el 100%, 0.5f el 50% y 0f el 0%
return chart;
}
}
public class PieChart3D {
public static void main(String[] args) {
PieChart demo = new PieChart("Titulo Ventana", "Cual es el
sistema operativo ms usado?");
Colegio Montessori
}
}