Anda di halaman 1dari 84

EJERCICIOS CON INTERFAZ

GRAFICA EN JAVA
1º CFGS Desarrollo de Aplicaciones
Multiplataforma

Descripción breve
Ejercicios realizados con los distintos métodos y clases proporcionados por AWT y SWING
para desarrollar una interfaz gráfica con Java

Jaime Solás Lara


Alumno 1º CFGS Desarrollo de Aplicaciones Multiplatafora
Este ejercicio muestra como trabajar con el layout FlowLayout

package Ejemplos_AWT_GUI;
import java.awt.*;
/**
*
* @author jaime
*/
public class Ventana1 extends Frame{

private Button b1,b2,b3;

public Ventana1(){
super("Esta es la Ventana 1");
setLayout(new FlowLayout());
//setLayout(new FlowLayout(FlowLayout.LEFT)); FlowLayout a la izquierda

b1 = new Button("Boton 1");


add(b1);

b2 = new Button("Boton 2");


add(b2);

b3 = new Button("Boton 3");


add(b3);

setSize(300,300);
setVisible(true);
}

public static void main(String args[]){


Ventana1 v1 = new Ventana1();
}
}

Este ejercicio muestra como trabajar con un layout BorderLayout

package Ejemplos_AWT_GUI;
import java.awt.*;
/**
*
* @author jaime
*/
public class Ventana2 extends Frame {

private Button bNorth,bSouth,bWest,bEast,bCenter;


public Ventana2(){

super("Esta es la Ventana 2");


setLayout(new BorderLayout());

bNorth = new Button("Norte");


add(bNorth,BorderLayout.NORTH);

bSouth = new Button("Sur");


add(bSouth,BorderLayout.SOUTH);

bWest = new Button("Oeste");


add(bWest,BorderLayout.WEST);

bWest = new Button("Este");


add(bWest,BorderLayout.EAST);

bCenter = new Button("Centro");


add(bCenter,BorderLayout.CENTER);

setSize(300,300);
setVisible(true);
}

public static void main(String args[]){

Ventana2 v2 = new Ventana2();


}
}

Este ejercicio muestra como trabajar con un layout GridLayout

/**
*
* @author jaime
*/
public class Ventana3 extends Frame {

private Button b1,b2,b3,b4,b5,b6,b7,b8,b9;

public Ventana3(){
super("Esta es la ventana 3");
setLayout(new GridLayout(3,3));

b1 = new Button("Boton 1");


add(b1);
b2 = new Button("Boton 2");
add(b2);

b3 = new Button("Boton 3");


add(b3);

b4 = new Button("Boton 4");


add(b4);

b5 = new Button("Boton 5");


add(b5);

b6 = new Button("Boton 6");


add(b6);

b7 = new Button("Boton 7");


add(b7);

b8 = new Button("Boton 8");


add(b8);

b9 = new Button("Boton 9");


add(b9);

setSize(300,300);
setVisible(true);
}

public static void main (String args[]){

Ventana3 v3 = new Ventana3();


}
}

Diseño de un chat con awt

package Ejemplos_AWT_GUI;
import java.awt.*;
/**
*
* @author jaime
*/
public class Chat extends Frame {

private TextField tfNick;


private TextField tfMensaje;
private Button bLogin;
private Button bLogout;
private Button bEnviar;
private List lstLog;

public Chat(){

super("Chat");
setLayout(new BorderLayout());

Panel pNorth = crearPNorte();


add(pNorth,BorderLayout.NORTH);

Panel pCenter = crearPCenter();


add(pCenter,BorderLayout.CENTER);

Panel pSouth = crearPSur();


add(pSouth,BorderLayout.SOUTH);

setSize(400,300);
setVisible(true);
}

private Panel crearPNorte(){

Panel p = new Panel(new FlowLayout(FlowLayout.LEFT));

p.add(new Label("Nick:"));

tfNick = new TextField(10);


p.add(tfNick);

bLogin = new Button("Login");


p.add(bLogin);

bLogout = new Button("Logout");


p.add(bLogout);

return p;
}

private Panel crearPCenter(){

Panel p = new Panel(new BorderLayout());

p.add(new Label("Conversacion: "),BorderLayout.NORTH);

lstLog = new List();


p.add(lstLog,BorderLayout.CENTER);
return p;
}

private Panel crearPSur(){

Panel p = new Panel(new BorderLayout());

p.add(new Label("Mensaje: "),BorderLayout.WEST);

tfMensaje = new TextField();


p.add(tfMensaje,BorderLayout.CENTER);

bEnviar = new Button("Enviar");


p.add(bEnviar,BorderLayout.EAST);

return p;
}

public static void main(String args[]){

Chat c = new Chat();


}
}

Ejemplo de uso con ActionListener

package Ejemplos_AWT_GUI;
import java.awt.*;
import java.awt.event.*;
/**
*
* @author jaime
*/
public class DemoListener1 extends Frame {

private Button boton;

public DemoListener1(){

super("Demo");
setLayout(new FlowLayout());

boton = new Button ("Boton");

//Agregamos un listener al boton


boton.addActionListener(new EscuchaBoton());
add(boton);
setSize(200,150);
setVisible(true);
}

class EscuchaBoton implements ActionListener{

public void actionPerformed(ActionEvent e){


System.out.println("Se presiono el boton");
}

public static void main(String args[]){

new DemoListener1();
}
}

Al hacer clic sobre el botón la pantalla cambiará de posición de forma aleatoria

package Ejemplos_AWT_GUI;
import java.awt.*;
import java.awt.event.*;
/**
*
* @author jaime
*/
public class DemoListener2 extends Frame {

private Button boton;

public DemoListener2(){

super("Demo");
setLayout(new FlowLayout());

boton = new Button ("Boton");

//Agregamos un listener al boton


boton.addActionListener(new EscuchaBoton());
add(boton);

setSize(200,150);
setVisible(true);
}

class EscuchaBoton implements ActionListener{


public void actionPerformed(ActionEvent e){

//Dimension de la ventana
Dimension dimVentana = getSize();

//Dimension de la pantalla
Dimension dimScreen = getToolkit().getScreenSize();

//Nuevas coordenadas (aleatorias) para reubicar la ventana


int x = (int) (Math.random() * (dimScreen.width-dimVentana.width));
int y = (int) (Math.random() * (dimScreen.height-dimVentana.height));

//Cambio la ubicacion de la ventana


setLocation(x,y);
}

public static void main(String args[]){

new DemoListener2();
}
}

Cuando el ratón se acerca para intentar darle al botón la ventana se mueve de forma
aleatoria por la pantalla

package Ejemplos_AWT_GUI;
import java.awt.*;
import java.awt.event.*;
/**
*
* @author jaime
*/
public class DemoListener3 extends Frame
{
private Button boton;

public DemoListener3(){
super("Demo");
setLayout(new FlowLayout());

//Quien genera el evento es el frame


addMouseMotionListener(new EscuchaMouse());

boton = new Button("Boton");


add(boton);
setSize(200,150);
setVisible(true);

class EscuchaMouse implements MouseMotionListener


{

@Override
public void mouseMoved(MouseEvent e)
{

int distancia = 10;


Point pMouse = e.getPoint();

Dimension dimBoton = boton.getSize();


Point pBoton = boton.getLocation();

int difX1 = Math.abs(pBoton.x-pMouse.x);


int difX2 = Math.abs((pBoton.x+dimBoton.width)-pMouse.x);

int difY1 = Math.abs(pBoton.y-pMouse.y);


int difY2 = Math.abs((pBoton.y+dimBoton.height)-pMouse.y);

if(difX1 < distancia || difX2 < distancia ||


difY1 < distancia || difY2 < distancia)
{
Dimension dimVentana = getSize();
Dimension dimScreen = getToolkit().getScreenSize();

int x = (int) (Math.random() * (dimScreen.width-dimVentana.width));


int y = (int) (Math.random() * (dimScreen.height-dimVentana.height));

setLocation(x,y);
}
}
@Override
public void mouseDragged(MouseEvent e){}
}
public static void main (String args[])
{
new DemoListener3();
}

}
Muestra como se cierra una ventana con AWT

package Ejemplos_AWT_GUI;
import java.awt.Frame;
import java.awt.event.*;
/**
*
* @author jaime
*/
public class DemoListener4 extends Frame
{
public DemoListener4()
{
super("Demo");
//Relacionamos un WindowsListener con el Frame
addWindowListener(new EscuchaVentana());

setSize(200,150);
setVisible(true);
}

class EscuchaVentana implements WindowListener


{
public void windowClosing(WindowEvent e)
{
System.out.println("oculto");
setVisible(false);

System.out.println("libero");
dispose();

System.out.println("Finalizar aplicacion");
System.exit(0);
}

//La interface WindowListener tiene 7 metodos, asi que tenemos que


//sobrescribirlos a todos aunque sea dejandolos vacios
@Override
public void windowOpened(WindowEvent e){}

@Override
public void windowClosed(WindowEvent e){}

@Override
public void windowIconified(WindowEvent e){}

@Override
public void windowDeiconified(WindowEvent e){}
@Override
public void windowActivated(WindowEvent e){}

@Override
public void windowDeactivated(WindowEvent e) {}

public static void main (String args[]){

new DemoListener4();
}

Introducimos unos caracteres en un textfield, lo guardamos, y si hacemos doble clic en la


lista podremos borrar lo seleccionado

package Ejemplos_AWT_GUI;
import java.awt.*;
import java.awt.event.*;
/**
*
* @author jaime
*/
public class DemoListener5 extends Frame {

private Button bAgregar;


private TextField tfItem;
private List lista;

public DemoListener5()
{
super("Action Listner");

//Defino el layout principal


setLayout(new BorderLayout());

//Al norte
Panel pn = crearPNorte();
add(pn,BorderLayout.NORTH);

//Al centro
lista = new List();
add(lista,BorderLayout.CENTER);

//Seteamos los listeners


bAgregar.addActionListener(new EscuchaAgregar());
tfItem.addActionListener(new EscuchaAgregar());
lista.addActionListener(new EscuchaDobleClick());
this.addWindowListener(new EscuchaVentana());

setSize(300,300);
setVisible(true);

//El cursor aparecera por defecto en el textField


tfItem.requestFocus();
}

class EscuchaAgregar implements ActionListener


{
public void actionPerformed(ActionEvent e)
{
//Tomamos el texto ingresado en el TextField
String item = tfItem.getText();

//Lo agrego a la lista


lista.add(item);

//Selecciono todo el texto en el TextField


tfItem.selectAll();

//Seteo el foco en el TextField


tfItem.requestFocus();
}
}

class EscuchaDobleClick implements ActionListener


{
public void actionPerformed(ActionEvent e)
{
//Tomo la posicion del item seleccionado
int idx = lista.getSelectedIndex();

//Seteo el item selecciona en el TextField


tfItem.setText(lista.getSelectedItem());

//Lo remuevo de la lista


lista.remove(idx);

//Selecciono todo el texto del TextField


tfItem.selectAll();

//Seteo el foco en el TextField


tfItem.requestFocus();
}
}

class EscuchaVentana implements WindowListener


{
public void windowClosing(WindowEvent e)
{
System.out.println("oculto");
setVisible(false);

System.out.println("libero");
dispose();

System.out.println("Finalizar aplicacion");
System.exit(0);
}

//La interface WindowListener tiene 7 metodos, asi que tenemos que


//sobrescribirlos a todos aunque sea dejandolos vacios
@Override
public void windowOpened(WindowEvent e){}

@Override
public void windowClosed(WindowEvent e){}

@Override
public void windowIconified(WindowEvent e){}

@Override
public void windowDeiconified(WindowEvent e){}

@Override
public void windowActivated(WindowEvent e){}

@Override
public void windowDeactivated(WindowEvent e) {}

private Panel crearPNorte(){

Panel p = new Panel(new FlowLayout(FlowLayout.LEFT));

p.add(new Label("Item:"));

tfItem = new TextField(10);


p.add(tfItem);
bAgregar = new Button("Agregar");
p.add(bAgregar);

return p;
}

public static void main(String args[]){

new DemoListener5();
}
}

Vamos introduciendo caracteres y un label nos lo va mostrando y en el momento que


pulsamos intro todas las letras introducidas se ponen mayusculas y se marcan

package Ejemplos_AWT_GUI;
import java.awt.*;
import java.awt.event.*;
/**
*
* @author jaime
*/
public class DemoListener6 extends Frame {

private TextField tf;


private Label lab;

public DemoListener6()
{
super("Key Listener");

//Definimos el layout principal


setLayout(new FlowLayout(FlowLayout.LEFT));
add(new Label ("Ingrese Texto:"));

tf = new TextField(15);
add(tf);

lab = new Label();


add(lab);

//Agregamos listeners al TextField


tf.addKeyListener(new EscuchaTecla());
tf.addActionListener(new EscuchaEnter());

setSize(350,100);
setVisible(true);
//Mando el cursor al TextField
tf.requestFocus();

addWindowListener(new EscuchaVentana());
}

class EscuchaTecla implements KeyListener


{
public void keyPressed(KeyEvent e)
{
char c = e.getKeyChar();

lab.setText(Character.toString(c));
}

@Override
public void keyReleased(KeyEvent e){}

@Override
public void keyTyped(KeyEvent e){}
}

class EscuchaEnter implements ActionListener


{
public void actionPerformed(ActionEvent e)
{
//Tomamos el texto ingresado en el TextField
String texto = tf.getText();

//Lo seteo como texto en el Label


lab.setText(texto);

//Refrescamos los componentes de la ventana


validate();

//Covertimos a mayuscula el texto del TextField


tf.setText(texto.toUpperCase());

//Lo seleccionamos todo


tf.selectAll();
}
}

class EscuchaVentana implements WindowListener


{
public void windowClosing(WindowEvent e)
{
System.out.println("oculto");
setVisible(false);

System.out.println("libero");
dispose();

System.out.println("Finalizar aplicacion");
System.exit(0);
}

//La interface WindowListener tiene 7 metodos, asi que tenemos que


//sobrescribirlos a todos aunque sea dejandolos vacios
@Override
public void windowOpened(WindowEvent e){}

@Override
public void windowClosed(WindowEvent e){}

@Override
public void windowIconified(WindowEvent e){}

@Override
public void windowDeiconified(WindowEvent e){}

@Override
public void windowActivated(WindowEvent e){}

@Override
public void windowDeactivated(WindowEvent e) {}

public static void main (String args[]){

new DemoListener6();
}

Calculadora con SWING

package Ejemplos_SWING_GUI;
import java.awt.*;
import javax.swing.border.Border;
/**
*
* @author jaime
*/
public class Calculadora extends Frame {
private Button b0,b1,b2,b3,b4,b5,b6,b7,b8,b9;
private Button bDec,bMas,bMenos,bPor,bDiv,bIgual,bBorrar;
private TextField tfDisplay;

public Calculadora(){

super();

setLayout(new BorderLayout());

//En el norte ubicamos el display


tfDisplay = new TextField();
add(tfDisplay,BorderLayout.NORTH);

//En el centro ubicamos el teclado


Panel pTeclado = crearTeclado();
add(pTeclado,BorderLayout.CENTER);

//Este metodo dimensiona y setea el tamanio exacto


//necesario para contener todos los componentes del frame
pack();
setVisible(true);
}

private Panel crearTeclado(){

//Instanciamos los 16 botones

b0 = new Button("0");
b1 = new Button("1");
b2 = new Button("2");
b3 = new Button("3");
b4 = new Button("4");
b5 = new Button("5");
b6 = new Button("6");
b7 = new Button("7");
b8 = new Button("8");
b9 = new Button("9");
bDec = new Button(".");
bMas = new Button("+");
bMenos = new Button("-");
bPor = new Button("*");
bDiv = new Button("/");
bIgual = new Button("=");

//Instanciamos n Panel (un container) con GridLayout de 4x4


Panel p = new Panel(new GridLayout(4,4));
//Agregamos los botones al Panel

//Fila 0 (El de mas arriba)


p.add(b7);
p.add(b8);
p.add(b9);
p.add(bDiv);

//Fila 1 (la segunda comenzando desde arriba)


p.add(b4);
p.add(b5);
p.add(b6);
p.add(bPor);

//Fila 2 (la tercera comenzando desde arriba)


p.add(b1);
p.add(b2);
p.add(b3);
p.add(bMenos);

//Fila 3 (la cuarta comenzando desde arriba)


p.add(bDec);
p.add(b0);
p.add(bIgual);
p.add(bMas);

//retorno el Panel con todos los botones agregados


return p;
}

public static void main (String args[]){

Calculadora c = new Calculadora();


}
}

Crear una interfaz chat con SWING

package Ejemplos_SWING_GUI;
import com.sun.java.swing.plaf.windows.WindowsLookAndFeel;
import java.awt.*;
import javax.swing.*;
import javax.swing.border.*;
/**
*
* @author jaime
*/
public class ChatSwing extends JFrame
{
private JTextField tfNick;
private JTextField tfMensaje;
private JButton bLogin;
private JButton bLogout;
private JButton bEnviar;
private JList lstLog;

private Border border;

public ChatSwing()
{
//Pedimos el "panel de contencion" al JFrame
Container content = getContentPane();

//Seteamos el layout
content.setLayout(new BorderLayout());

//Este sera el tipo de borde que


//utilizamos en todos los panales
border = BorderFactory.createEtchedBorder(EtchedBorder.LOWERED);

//Creamos el panel norte


JPanel pNorth = crearPNorte();
content.add(pNorth,BorderLayout.NORTH);

//Creamos el panel central


JPanel pCenter = crearPCenter();
content.add(pCenter,BorderLayout.CENTER);

//Creamos el panel sur


JPanel pSouth = crearPSur();
content.add(pSouth,BorderLayout.SOUTH);

setSize(400,300);
setVisible(true);
}

private JPanel crearPNorte()


{
JPanel p = new JPanel(new FlowLayout(FlowLayout.LEFT));

//Instancio un TitleBorder con el titulo y el objeto border que cree en


//el contructor
TitledBorder titleBorder = BorderFactory.createTitledBorder(border,"Nick");

//Asigno el title border al panel


p.setBorder(titleBorder);

tfNick = new JTextField(10);


p.add(tfNick);

bLogin = new JButton("Login");


p.add(bLogin);

bLogout = new JButton("Logout");


p.add(bLogout);

return p;
}

private JPanel crearPCenter()


{
JPanel p = new JPanel(new BorderLayout());

TitledBorder titleBorder = BorderFactory.createTitledBorder(border,"Conversacion");

p.setBorder(titleBorder);

lstLog = new JList();


JScrollPane scroll = new JScrollPane(lstLog);
p.add(scroll,BorderLayout.CENTER);

return p;
}

private JPanel crearPSur()


{
JPanel p = new JPanel(new BorderLayout());

TitledBorder titleBorder = BorderFactory.createTitledBorder(border,"Mensaje");

p.setBorder(titleBorder);

tfMensaje = new JTextField();


p.add(tfMensaje,BorderLayout.CENTER);

bEnviar = new JButton("Enviar");


p.add(bEnviar,BorderLayout.EAST);

return p;
}

public static void main(String args[]) throws UnsupportedLookAndFeelException


{
UIManager.setLookAndFeel(new WindowsLookAndFeel());//Con este metodo nos permite
darle el estilo de Windows al Frame de Java
ChatSwing c = new ChatSwing();
}
}

Creamos un JFrame, en el tenemos un JList que muestra un conjunto de nombres, estos


nombres los obtiene desde un ArrayList.

package Ejemplos_SWING_GUI.DemoJList;
import java.awt.*;
import java.util.Vector;
import javax.swing.*;
/**
*
* @author jaime
*/
public class DemoJList extends JFrame
{
public DemoJList()
{
super("Demo JList");
Container content = getContentPane();
content.setLayout(new BorderLayout());

//Obtengo el vector con los datos que vamos a mostrar


Vector<Object> datos = obtenerVectorDatos();

//El constructor de JList recibe una instacia de ListModel


JList lista = new JList(new VectorModel(datos));

//El ScrollPane agrega barras de scroll si es necesario


JScrollPane scrollLista = new JScrollPane(lista);

content.add(scrollLista,BorderLayout.CENTER);

setSize(300,300);
setVisible(true);

private Vector<Object> obtenerVectorDatos()


{
Vector<Object> v = new Vector<Object>();
v.add("John Lennon");
v.add("Paul McCartney");
v.add("George Harrison");
v.add("Ringo Star");
v.add("Sandro (Roberto Sanchez)");
v.add("Charly Garcia");
v.add("John Lennon");
v.add("Caetano Veloso");

return v;
}

public static void main(String args[])


{
new DemoJList();
}
}

package Ejemplos_SWING_GUI.DemoJList;
import java.util.Vector;
import javax.swing.ListModel;
import javax.swing.event.ListDataListener;
/**
*
* @author jaime
*/
public class VectorModel implements ListModel
{
private Vector<Object> datos;

public VectorModel(Vector<Object> datos)


{
this.datos = datos;
}

public Object getElementAt(int index)


{
return datos.get(index);
}

public int getSize()


{
return datos.size();
}

public void removeListDataListener(ListDataListener lst){}


public void addListDataListener(ListDataListener lst){}
}
Creamos un JFrame, en el tenemos un JList que muestra un conjunto de nombres, estos
nombres los obtiene desde un Array convencional.

package Ejemplos_SWING_GUI.DemoJListArray;
import java.util.Vector;
import javax.swing.ListModel;
import javax.swing.event.ListDataListener;
/**
*
* @author jaime
*/
public class ArrayModel implements ListModel
{
private Object[] datos;

public ArrayModel(Object[] datos)


{
this.datos = datos;
}

public Object getElementAt(int index)


{
return datos[index];
}

public int getSize()


{
return datos.length;
}

public void removeListDataListener(ListDataListener l){}


public void addListDataListener(ListDataListener l){}
}

package Ejemplos_SWING_GUI.DemoJListArray;
import java.awt.*;
import java.util.Vector;
import javax.swing.*;
/**
*
* @author jaime
*/
public class DemoJListArray extends JFrame {
public DemoJListArray()
{
super("Demo JListArray");
Container content = getContentPane();
content.setLayout(new BorderLayout());

//Obtengo el array con los datos que vamos a mostrar


Object[] datos = obtenerArrayDatos();

//El constructor de JList recibe una instacia de ListModel


JList lista = new JList(new ArrayModel(datos));

//El ScrollPane agrega barras de scroll si es necesario


JScrollPane scrollLista = new JScrollPane(lista);

content.add(scrollLista,BorderLayout.CENTER);

setSize(300,300);
setVisible(true);

private Object[] obtenerArrayDatos()


{
Object []arr = {"John Lennon"
,"Paul McCartney"
,"George Harrison"
,"Ringo Star"
,"Sandro (Roberto Sanchez)"
,"Charly Garcia"
,"Caetano Veloso"};
return arr;
}

public static void main(String args[])


{
new DemoJListArray();
}
}

Creamos un JFrame en el que en el se muestra información a través de una tabla

package Ejemplos_SWING_GUI.DemoJTable;
import java.awt.*;
import javax.swing.*;
/**
*
* @author jaime
*/
public class DemoJTable extends JFrame
{
public DemoJTable()
{
super("Demo JTable");
Container content = getContentPane();
content.setLayout(new BorderLayout());

Object[][] datos = obtenerMatrizDatos();


JTable tabla = new JTable(new MatrizModel(datos));

JScrollPane scrollLista = new JScrollPane(tabla);


content.add(scrollLista,BorderLayout.CENTER);

setSize(300,300);
setVisible(true);

}
private Object[][] obtenerMatrizDatos()
{
Object [][]mat ={
{"Columna 0","Columna 1","Columna 2","Columna 3"}
,{"Rojo","Verde","Azul","Violeta"}
,{"Amarillo","Naranja","Blanco","Gris"}
,{"Negro","Turquesa","Sepia","Rosa"}
,{"Salmon","Maiz","Marron","Fucsia"}
};

return mat;
}

public static void main(String[] args)


{
new DemoJTable();
}
}

package Ejemplos_SWING_GUI.DemoJTable;

import javax.swing.event.TableModelListener;
import javax.swing.table.TableModel;
/**
*
* @author jaime
*/
public class MatrizModel implements TableModel
{
private Object[][] datos;
public MatrizModel(Object[][] datos)
{
this.datos = datos;
}

public int getColumnCount()


{
//Retorna la cantidad de columnas
return datos[0].length;
}

public String getColumnName(int columnIndex)


{
//Retorna el titulo (header) de la columna
return datos[0][columnIndex].toString();
}

public int getRowCount()


{
//retorna la cantidad de filas que sera uno menos que
//el length porque la primera contiene los header
return datos.length-1;
}

public Object getValueAt(int rowIndex,int columnIndex)


{
//La fila 0 corresponde a los header
return datos[rowIndex+1][columnIndex];
}

public boolean isCellEditable(int rowIndex,int columnIndex)


{
return false;
}

public void setValueAt(Object value,int rowIndex,int columnIndex){}

public Class<?> getColumnClass(int columnIndex)


{
return String.class;
}

public void addTableModelListener(TableModelListener lst){}


public void removeTableModelListener(TableModelListener lst){}
}
1.- Fichero PrimeraVentanaSwing.java
package Ejercicios_Resueltos_GUI;
import javax.swing.*;
/**
*
* @author jaime
*/
public class Ejercicio1{

public Ejercicio1()
{
JFrame.setDefaultLookAndFeelDecorated(true);
JFrame marco = new JFrame("Hola mundo Swing");
marco.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
marco.setSize(300,200);
marco.setVisible(true);
}

public static void main(String args[])


{
Ejercicio1 e = new Ejercicio1();
}
}

2.- SegundaVentana.java
package Ejercicios_Resueltos_GUI;
import javax.swing.*;
/**
*
* @author jaime
*/
public class Ejercicio2 {

Ejercicio2()
{
JFrame.setDefaultLookAndFeelDecorated(true);
JFrame marco = new JFrame("Hola mundo swing");
marco.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
marco.setSize(300,200);
JLabel etiqueta = new JLabel("Guia practica Java J2SE1.5");
marco.add(etiqueta);
marco.setVisible(true);
}

public static void main (String args[])


{
Ejercicio2 e = new Ejercicio2();
}
}

3.- Fichero PrimerEvento.java


package Ejercicios_Resueltos_GUI;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
/**
*
* @author jaime
*/
public class Ejercicio3 implements ActionListener
{
private int nPulsaciones = 0;
JFrame marco;
JLabel etiqueta;
JButton boton;

Ejercicio3()
{
JFrame.setDefaultLookAndFeelDecorated(true);
marco = new JFrame("Primer evento");
marco.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
boton = new JButton("Pulsa este boton");
boton.addActionListener(this);
etiqueta = new JLabel("Sin pulsar: ");
JPanel panel = new JPanel(new GridLayout(0,1));
panel.setBorder(BorderFactory.createEmptyBorder(30,30,10,30));
panel.add(boton);
panel.add(etiqueta);
marco.add(panel,BorderLayout.CENTER);
marco.pack();
marco.setVisible(true);
}

public void actionPerformed(ActionEvent e)


{
nPulsaciones++;
etiqueta.setText("Nº Pulsaciones: "+nPulsaciones);
}

public static void main(String args[])


{
new Ejercicio3();
}
}

4.- PrimerEventoVentana
package Ejercicios_Resueltos_GUI;
import javax.swing.*;
import java.awt.event.*;
import java.awt.*;
/**
*
* @author jaime
*/
public class Ejercicio4 {

JTextArea areaTexto;

Ejercicio4()
{
JFrame.setDefaultLookAndFeelDecorated(true);
JFrame marco = new JFrame("Eventos de ventana");
marco.addWindowListener(new GestionaVentana());
areaTexto = new JTextArea();
marco.add(areaTexto);
marco.setSize(200,100);
marco.setVisible(true);
}
public static void main(String args[])
{
Ejercicio4 e4 = new Ejercicio4();
}
class GestionaVentana extends WindowAdapter
{
@Override
public void windowClosing(WindowEvent e)
{
areaTexto.append("Cerrando la ventana\n");
System.exit(0);
}

@Override
public void windowActivated(WindowEvent e)
{
areaTexto.append("Activa la ventana\n");
}

@Override
public void windowOpened(WindowEvent e)
{
areaTexto.append("Abierta la ventana\n");
}

@Override
public void windowIconified(WindowEvent e)
{
areaTexto.append("Minimiza la ventana\n");
}

@Override
public void windowDeiconified(WindowEvent e)
{
areaTexto.append("Desplegando la ventana\n");
}

@Override
public void windowDeactivated(WindowEvent e)
{
areaTexto.append("Desactiva la ventana\n");
}
}
}

5.- Animacion.java
package Ejercicios_Resueltos_GUI;
import java.awt.*;
import javax.swing.*;
/**
*
* @author jaime
*/
public class Ejercicio5 extends JFrame implements Runnable
{
ImageIcon peli[] = new ImageIcon[8];
int indice = 0;
JLabel imagenS;
Thread hiloAnimacion;

Ejercicio5()
{
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
for(int i = 1;i<peli.length;i++)
{
peli[i-1] = new ImageIcon("luna"+i+".png");
}
imagenS = new JLabel(new ImageIcon("luna1.png"));
add(imagenS, BorderLayout.CENTER);
hiloAnimacion = new Thread(this);
hiloAnimacion.start();
setTitle("Animación");
setSize(350,350);
setVisible(true);
}

public void run()


{
while(true)
{
try
{
Thread.sleep(1000);
}
catch(Exception e){}
if(++indice >=peli.length)
{
indice = 0;
}
repaint();
}
}
public void paint(Graphics g)
{
imagenS.setIcon(peli[indice]);
}
public static void main(String args[])
{
new Ejercicio5();
}
}

6.- Evento sobre botones.


package Ejercicios_Resueltos_GUI;
import java.io.*;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
/**
*
* @author jaime
*/
public class Ejercicio6
{
JButton listaBotones[];
String listaNombres[]={"Abrir","Archivar","Nuevo"};
JTextArea areaTexto;
JPanel panelP;
JFrame marco;

Ejercicio6()
{
JFrame.setDefaultLookAndFeelDecorated(true);
marco= new JFrame("Aplicación simple");
marco.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
marco.setLayout(new BorderLayout());
marco.setSize(650,500);
marco.setIconImage(Toolkit.getDefaultToolkit().createImage("luna1.png"));
JFrame.setDefaultLookAndFeelDecorated(true);
listaBotones= new JButton[listaNombres.length];
panelP=new JPanel();
panelP.setLayout(new FlowLayout(FlowLayout.LEFT));
for(int i=0;i<listaNombres.length;i++)
{
listaBotones[i]=new JButton();
listaBotones[i].setIcon(new ImageIcon(listaNombres[i]+".png"));
listaBotones[i].setName(listaNombres[i]);
listaBotones[i].setToolTipText("Permite ejecutar la acción de "+listaNombres[i]);
listaBotones[i].setSelected(false);
listaBotones[i].addMouseListener(new VigilaBarraHerr());
panelP.add(listaBotones[i]);
}
marco.add(panelP,"North");
areaTexto = new JTextArea("");
marco.add(areaTexto,"Center");
marco.setVisible(true);
}
class VigilaBarraHerr extends MouseAdapter
{
@Override
public void mousePressed(MouseEvent e)
{
Component aux = e.getComponent();
}
@Override
public void mouseReleased(MouseEvent e)
{
Component aux = e.getComponent();
Frame ventana = new Frame();
if(aux.getName().equals("Abrir"))
areaTexto.append("Se ha pulsado el botón \"Abrir\"\n");
else if(aux.getName().equals("Archivar"))
areaTexto.append("Se ha pulsado el botón \"Archivar\"\n");
else if(aux.getName().equals("Nuevo"))
areaTexto.append("Se ha pulsado el botón \"Nuevo\"\n");
else
areaTexto.append("Botón desconocido\n");
}
}
public static void main(String args[])
{
Ejercicio6 ej6=new Ejercicio6();
}
}

7.- EventosRaton.java
package Ejercicios_Resueltos_GUI;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
/**
*
* @author jaime
*/
public class Ejercicio7 {
JTextArea areaTexto;
JLabel coordenadasRaton;
JFrame marco;
JLabel tablero;

Ejercicio7()
{
JFrame.setDefaultLookAndFeelDecorated(true);
marco = new JFrame("Eventos del raton");
marco.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
marco.setLayout(new BorderLayout());
areaTexto = new JTextArea("Sin pulsar");
tablero = new JLabel(new ImageIcon("luna1.png"));
tablero.addMouseListener(new GestionaRaton());
tablero.addMouseMotionListener(new GestionaMovimientosRaton());
coordenadasRaton = new JLabel("Sin mover");
marco.setIconImage(Toolkit.getDefaultToolkit().createImage("luna2.png"));
marco.add("North",areaTexto);
marco.add("Center",tablero);
marco.add("South",coordenadasRaton);
marco.setVisible(true);
marco.pack();
}
class GestionaRaton extends MouseAdapter
{
@Override
public void mousePressed(MouseEvent e)
{
areaTexto.setText("Pulsado el botón del ratón en: X= "+
e.getX()+"Y= "+e.getY()+" Botón: "+e.getButton());
}
@Override
public void mouseReleased(MouseEvent e)
{
areaTexto.setText("Soltado el botón del ratón en: X= "+
e.getX()+"Y= "+e.getY()+" Botón: "+e.getButton());
}
@Override
public void mouseEntered(MouseEvent e)
{
areaTexto.setText("Entra el ratón en: X= "+
e.getX()+"Y= "+e.getY());
}
@Override
public void mouseExited(MouseEvent e)
{
areaTexto.setText("Sale el ratón en: X= "+
e.getX()+"Y= "+e.getY());
}
}
class GestionaMovimientosRaton extends MouseMotionAdapter
{
@Override
public void mouseDragged(MouseEvent e)
{
coordenadasRaton.setText(
"Arrastrado X= "+e.getX() + "Y= "+e.getY());
}
@Override
public void mouseMoved(MouseEvent e)
{
coordenadasRaton.setText(
"Movido X= "+e.getX() + "Y= "+e.getY());
}
}
public static void main(String args[])
{
Ejercicio7 ej7= new Ejercicio7();
}
}
8.- EventosMenu.java

package Ejercicios_Resueltos_GUI;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.border.*;

/**
*
* @author jaime
*/
public class Ejercicio8 {

JTextArea areaTexto;
BarraMenu barraMenu;
JFrame marco;

public Ejercicio8()
{
JFrame.setDefaultLookAndFeelDecorated(true);
marco = new JFrame("Menu Swing");
marco.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
marco.setLayout(new BorderLayout());
barraMenu = new BarraMenu();
marco.setSize(300,300);
areaTexto = new JTextArea();
marco.add("Center",areaTexto);
marco.setIconImage(
Toolkit.getDefaultToolkit().createImage("luna1.png"));
marco.setJMenuBar(barraMenu);
marco.setVisible(true);
}

class BarraMenu extends JMenuBar


{
JMenu menuFichero;
JMenu menuEdición;
JMenu menuAyuda;
BarraMenu()
{
menuFichero= new JMenu("Fichero");
menuEdición= new JMenu("Edición");
menuAyuda = new JMenu("Ayuda");
JCheckBoxMenuItem opcionAbrirF = new JCheckBoxMenuItem("Abrir", new
ImageIcon("luna3.png"));
JRadioButtonMenuItem opcionComprimirF = new JRadioButtonMenuItem("Comprimir",
new ImageIcon("Abrir.png"));
JMenuItem opcionCerrarF = new JMenuItem("Cerrar");
JMenuItem opcionSalirF = new JMenuItem("Salir");
opcionAbrirF.addActionListener(new VigilaMenu());
opcionCerrarF.addActionListener(new VigilaMenu());
opcionComprimirF.addActionListener(new VigilaMenu());
opcionSalirF.addActionListener(new VigilaMenu());

opcionCerrarF.setAccelerator(KeyStroke.getKeyStroke('C',Toolkit.getDefaultToolkit().getMenu
ShortcutKeyMask()));

menuFichero.add(opcionAbrirF);
menuFichero.add(opcionCerrarF);
menuFichero.add(opcionComprimirF);
menuFichero.add(opcionSalirF);
add(menuFichero);
add(menuEdición);
add(menuAyuda);
}
}
public class VigilaMenu implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
String acción = e.getActionCommand();
areaTexto.setText(acción);
if(acción.equals("Salir"))
System.exit(0);
}
}
public static void main(String args[])
{
Ejercicio8 ej8 = new Ejercicio8();
}
}

9.- EventosTeclado.java

package Ejercicios_Resueltos_GUI;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
/**
*
* @author jaime
*/

public class Ejercicio9


{
String texto ="";
JFrame marco;
public Ejercicio9()
{
JFrame.setDefaultLookAndFeelDecorated(true);
marco = new JFrame("Eventos del teclado");
marco.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Tablero tablero = new Tablero();
marco.add(tablero);
marco.setSize(250,150);
marco.addKeyListener(new VigilaTeclado());
marco.setVisible(true);
}
class Tablero extends JPanel
{
public void paint(Graphics g)
{
Dimension dim=getSize();
g.clearRect(0,0,dim.width, dim.height);
g.drawString(texto,50,50);
}
}
class VigilaTeclado extends KeyAdapter
{
public void keyPressed( KeyEvent evt)
{
char tecla = evt.getKeyChar();
switch(tecla)
{
case 127://tecla suprimir
texto="";
break;
case 8://tecla borrar hacia atras(BACKSPACE)
if (texto.length()>0)
texto=texto.substring(0,texto.length()-1);
break;
default:
if(texto.length()<15) texto+=tecla;
}
marco.repaint();
}
}
public static void main(String args[])
{
Ejercicio9 ej9 =new Ejercicio9();
}
}
Ejercicio 10, 11 y 12: Son tres clases que una vez ejecutada la principal calculan la raíz de un
polinomio, arrastrado un curso por una barra y te dice si es real o imaginaria

package Ejercicios_Resueltos_GUI.Ejercicios10_11_12;

import Ejercicios_Resueltos_GUI.Ejercicio9;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

/**
*
* @author jaime
*/

public class Ejercicio10


{
Cursor cursor1,cursor2,cursor3;
BarraControl control;
JFrame marco;
Ejercicio10()
{
JFrame.setDefaultLookAndFeelDecorated(true);
marco= new JFrame("Raíces de un polinomio ax2+bx+c=0");
marco.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
marco.setLayout(new GridLayout(4,1));
control=new BarraControl(this);
cursor1=new Cursor(1.0,"a");
cursor2=new Cursor(1.0,"b");
cursor3=new Cursor(0.0,"c");
marco.add(control);
marco.add(cursor1);
marco.add(cursor2);
marco.add(cursor3);
marco.setVisible(true);
marco.pack();
}
public static void main(String args[])
{
Ejercicio10 ej10 = new Ejercicio10();
}
}

package Ejercicios_Resueltos_GUI.Ejercicios10_11_12;

import java.awt.*;
import javax.swing.*;
import javax.swing.event.*;

/**
* Ejercicio 11
* @author jaime
*/

public class Cursor extends JPanel


{
JSlider barra;
JTextArea casilla;
JLabel lab;
Cursor(double inicial, String m)
{
lab=new JLabel(m);
barra=new JSlider(JSlider.HORIZONTAL, -100, 100, (int)inicial);
barra.addChangeListener(new VigilaCursor());
casilla=new JTextArea(new Double(inicial).toString());
setLayout(new FlowLayout(FlowLayout.LEFT));
add(lab);
add(barra);
add(casilla);
}
class VigilaCursor implements ChangeListener
{
public void stateChanged(ChangeEvent e)
{
double valor=(double)barra.getValue();
casilla.setText(new Double(valor).toString());
}
}
}

package Ejercicios_Resueltos_GUI.Ejercicios10_11_12;

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

/**
* Ejercicio 12
* @author jaime
*/

public class BarraControl extends JToolBar


{
JButton boton1;
JTextArea mensaje;
Ejercicio10 apl;

BarraControl(Ejercicio10 apl)//Ejercicio10 corresponde a Raices


{
this.apl=apl;
boton1 = new JButton("Calcular");
boton1.setName("Calcular");
boton1.addMouseListener(new VigilaBarraHerr());
setLayout(new FlowLayout(FlowLayout.LEFT));
mensaje=new JTextArea(" ");
mensaje.setPreferredSize(new Dimension(300,80));
add(mensaje);
add(boton1);
setFloatable(false);
}
class VigilaBarraHerr extends MouseAdapter
{
public void mousePressed(MouseEvent e){}

public void mouseReleased(MouseEvent e)


{
Component aux = e.getComponent();
if(aux.getName().equals("Calcular"))
{
double a,b,c;
a=(double)apl.cursor1.barra.getValue();
b=(double)apl.cursor2.barra.getValue();
c=(double)apl.cursor3.barra.getValue();
double discri= b*b-4*a*c;
mensaje.setText(" ");
String mensaje2 = "";
if(discri<0)
{
mensaje2 +="Raíces imaginarias\n";
discri *=-1;
mensaje2 +="r1= "+
((-1)*b/2*a)+"+i"+(Math.sqrt(discri)/2*a)+"\n";
mensaje2 +="r2= "+
((-1)*b/2*a)+"-i"+(Math.sqrt(discri)/2*a)+"\n";
}
else if(discri > 0)
{
mensaje2 +="Raices reales\n";
mensaje2 +="r1= "+
(((-1)*b+Math.sqrt(discri))/2*a)+"\n";
mensaje2 +="r2= "+
(((-1)*b-Math.sqrt(discri))/2*a)+"\n";
}else{
mensaje2 +="Raíces reales iguales\n";
mensaje2 +="r= "+((-1)*b/2*a)+"\n";
}
mensaje.append(mensaje2);
}
}
}

Ejercicios 13,14,15 nos muestra una pantalla compuesta por dos botones, y dos paneles, los
botones nos permiten buscan un archivo .txt o una imagen y mostrarlos en los paneles uno
para los .txt y otro para las imagenes

package Ejercicios_Resueltos_GUI.Ejercicios_Resueltos_GUI.Ejercicios13_14_15;

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
/**
*
* @author jaime
*/
public class Ejercicio13
{
JButton insertaI,insertaS;
JFrame marco;
JTextArea areaTextoS = new JTextArea(" ");
JPanel panel1;
JScrollPane panelS2,panelS3;
JSplitPane division;
BarraBotones barraBotones;

Ejercicio13()
{
JFrame.setDefaultLookAndFeelDecorated(true);
marco = new JFrame("Panel dividido");
marco.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
marco.setLayout(new BorderLayout());
marco.setSize(400,400);
barraBotones = new BarraBotones(this);
panelS2 = new JScrollPane(areaTextoS);
panelS3 = new JScrollPane();
division = new JSplitPane(JSplitPane.VERTICAL_SPLIT,panelS2,panelS3);
division.setDividerLocation(100);
marco.add("North",barraBotones);
marco.add("Center",division);
marco.setIconImage(Toolkit.getDefaultToolkit().createImage("luna1.png"));
marco.setVisible(true);
}
public static void main(String args[])
{
Ejercicio13 ej13 = new Ejercicio13();
}
}

package Ejercicios_Resueltos_GUI.Ejercicios_Resueltos_GUI.Ejercicios13_14_15;
import java.io.*;
import javax.swing.*;
import java.awt.*;
/**
*
* @author jaime
*/
public class HerramientasFichero
{
boolean cargaFicheroTexto(String nombreFichero, JTextArea areaTexto)
{
try
{
String lineaTexto="";
File canal1 = new File(nombreFichero);
FileInputStream flujo2=null;
BufferedReader filtro1=null;
if(canal1.canRead())
{
flujo2 = new FileInputStream(canal1);
filtro1 = new BufferedReader(new InputStreamReader(flujo2));
while(lineaTexto != null)
{
lineaTexto=filtro1.readLine();
if(lineaTexto!=null)
{
areaTexto.append(lineaTexto+"\n");
}
}
}
filtro1.close();
return true;
}
catch (Exception ex)
{
System.out.println("Error en fichero");
return false;
}
}
boolean archivaFicheroTexto(String nombreFichero, JTextArea areaTexto)
{
try
{
String lineaTexto="";
FileWriter flS=new FileWriter(nombreFichero);
BufferedWriter fS=new BufferedWriter(flS);
fS.write(areaTexto.getText());
fS.newLine();
fS.close();
return true;
}
catch (Exception ex)
{
System.out.println("Error en el fichero");
return false;
}
}
}

package Ejercicios_Resueltos_GUI.Ejercicios_Resueltos_GUI.Ejercicios13_14_15;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
/**
*
* @author jaime
*/

public class BarraBotones extends JToolBar


{
JButton boton1,boton2;
Ejercicio13 api; //Equivale a panelDividido clase Ejercicio13
BarraBotones(Ejercicio13 api)
{
this.api=api;
boton1=new JButton(new ImageIcon("imagen.png"));
boton2=new JButton(new ImageIcon("fichero.png"));
boton1.setName("Inferior");
boton2.setName("Superior");
boton1.addMouseListener(new VigilaBotones());
boton2.addMouseListener(new VigilaBotones());
add(boton1);
add(boton2);
}
class VigilaBotones extends MouseAdapter
{
public void mouseClicked(MouseEvent e)
{
JButton aux =(JButton)e.getComponent();
HerramientasFichero lP=new HerramientasFichero();
try
{
if(aux.getName().equals("Superior"))
{
Frame ventana = new Frame();
FileDialog dialogo = new FileDialog(ventana,"Selecciona un fichero de texto(*.txt)");
dialogo.setDirectory("c:/");
dialogo.setFile("*.txt");
dialogo.setVisible(true);
String nombreDirectorio = (String)dialogo.getDirectory();
String nombreFichero = (String)dialogo.getFile();
if (nombreFichero != null)
{
lP.cargaFicheroTexto(nombreDirectorio+nombreFichero,api.areaTextoS);
}
}
if(aux.getName().equals("Inferior"))
{
Frame ventana = new Frame();
FileDialog dialogo = new FileDialog(ventana,"Selecciona una imagen(*.png)");
dialogo.setDirectory("c:/");
dialogo.setFile("*.png");
dialogo.setVisible(true);
String nombreDirectorio = (String)dialogo.getDirectory();
String nombreFichero = (String)dialogo.getFile();
if(nombreFichero != null)
{
ImageIcon imagen=new
ImageIcon(nombreDirectorio+nombreFichero);
JLabel etiqueta=new JLabel(imagen);
JScrollPane panelS = new JScrollPane (etiqueta);
api.division.setBottomComponent(panelS);
}
}
}
catch(Exception ex)
{
System.out.println("Error en la lectura del fichero");
}
}
}
}
Ejercicio 16, nos muestra un frame con diferentes opciones, el usuario eligirá una y le
mostrará una ventana dependiendo de la opción elegida

package Ejercicios_Resueltos_GUI;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
/**
*
* @author jaime
*/
public class Ejercicio16
{
ButtonGroup grupoC;
public Ejercicio16()
{
JFrame.setDefaultLookAndFeelDecorated(true);
JFrame marco = new JFrame("Selecciona una opción y vota");
marco.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JDialog.setDefaultLookAndFeelDecorated(true);
JPanel panelP = creaPanelP();
panelP.setBorder(BorderFactory.createEmptyBorder(20,20,5,20));
marco.setIconImage(Toolkit.getDefaultToolkit().
createImage("cuestion.png"));
marco.add(panelP);
marco.pack();
marco.setVisible(true);
}
private JPanel creaPanelP()
{
JRadioButton[] casillasActivación = new JRadioButton[3];
grupoC = new ButtonGroup();
JButton botón = null;
casillasActivación[0] = new JRadioButton(
"<html><font color=blue>Si</font></html>");
casillasActivación[0].setActionCommand("Si");
casillasActivación[1] = new JRadioButton(
"<html><font color=blue>No</font></html>");
casillasActivación[1].setActionCommand("No");
casillasActivación[2] = new JRadioButton(
"<html><font color=blue>No sabe/No contesta</font></html>");
casillasActivación[2].setActionCommand("N/C");
for (int i = 0; i < 3; i++)
grupoC.add(casillasActivación[i]);
casillasActivación[0].setSelected(true);
botón = new JButton("Vota aquí");
botón.addActionListener(new GestionaEventos());
return panelSelección("<html><font color=red size =5> ¿Cree que deberían prohibir las
corridasde toros?",casillasActivación, botón);
}
private JPanel panelSelección(String título,JRadioButton[] casillasSel, JButton botón)
{
JPanel panelCas = new JPanel();
JLabel label = new JLabel(título);
panelCas.setLayout(new BoxLayout(panelCas, BoxLayout.PAGE_AXIS));
panelCas.add(label);
for(int i = 0; i < casillasSel.length; i++)
panelCas.add(casillasSel[i]);
JPanel panelSel = new JPanel(new BorderLayout());
panelSel.add(panelCas, BorderLayout.NORTH);
panelSel.add(botón, BorderLayout.SOUTH);
return panelSel;
}

class GestionaEventos implements ActionListener


{
public void actionPerformed(ActionEvent e)
{
String opción =grupoC.getSelection().getActionCommand();
if(opción.equals("Si")||opción.equals("No"))
{
JOptionPane.showMessageDialog(
new JFrame(),"Gracias por su opinión");
}
else
JOptionPane.showMessageDialog(
new JFrame(),"¡Decídase ya!");
}
}
public static void main(String[] args)
{
Ejercicio16 ej16=new Ejercicio16();
}
}

1.-Realizar un programa, con una GUI, para gestionar una agenda con los datos: nombre,
teléfono, edad y email. De debe de crear un menú con las opciones:

• Altas: se inserta un nuevo registro en el fichero


• Bajas: se borra el registro correspondiente al nombre indicado.
• Modificación: Se modifica los datos del nombre introducido;
• Consulta: Visualiza los datos del nombre introducido
• Visualizar: Visualiza el contenido del fichero completo, en una nueva ventana.
• Crear fichero: Crea el fichero, en una nueva ventana.
(utiliza los distintos tipos de eventos: de menú, de teclado, etc.)

La información se introducirá en un formato similar a un formulario. Se mostrarán botones


para confirmar datos, borrar, …, y los que se consideren necesarios

package Ejercicio1;
/**
*
* @author jaime
*/
public class Principal {
public static void main (String args[])
{
FormularioPrincipal fp = new FormularioPrincipal();
}
}

package Ejercicio1;
import java.awt.*;
import java.awt.event.*;
import java.io.File;
import javax.swing.*;

/**
*
* @author jaime
*/
public class FormularioPrincipal extends JFrame implements ActionListener {

private JMenuBar menu;


private JMenu marchivo;
private JMenu mgesagenda;
private JMenuItem nuevaagenda,insertaramigo,borraragenda,salir,//Menu Archivo
consultaragenda,buscaramigo,borraramigo,modificaramigo;//Menu herramientas
private JList listaAmigos;
private DefaultListModel modelo = new DefaultListModel();

public FormularioPrincipal()
{
super("Agenda");

//Poner pantalla en el centro


Dimension pantalla = Toolkit.getDefaultToolkit().getScreenSize();
int height = pantalla.height;
int width = pantalla.width;
setSize(width/2, height/2);
setLocationRelativeTo(null);
menu = new JMenuBar();//Declaramos nuestra barra de menu y la aniadimos a nuestro
frame
setJMenuBar(menu);

//-----Menus principales-----
marchivo = new JMenu("Archivo");
menu.add(marchivo);

mgesagenda = new JMenu("Gestionar Agenda");


menu.add(mgesagenda);

//-----Submenu menu archivo-----


nuevaagenda = new JMenuItem("Nueva Agenda");
insertaramigo = new JMenuItem("Insertar Amigo");
borraragenda = new JMenuItem("Borrar Agenda");
salir = new JMenuItem("Salir");

//Añiadimos los eventos a cada submenu del menu


nuevaagenda.addActionListener(this);
insertaramigo.addActionListener(this);
borraragenda.addActionListener(this);
salir.addActionListener(this);

//Añiadimos las opciones al menu archivo


marchivo.add(nuevaagenda);
marchivo.add(insertaramigo);
marchivo.add(borraragenda);
marchivo.add(salir);

//-----Submenu menu herramientas-----


consultaragenda = new JMenuItem("Consultar Agenda");
buscaramigo = new JMenuItem("Buscar Amigo");
borraramigo = new JMenuItem("Borrar Amigo");
modificaramigo = new JMenuItem("Modificar Amigo");

//Añiadimos los eventos a cada submenu del menu


consultaragenda.addActionListener(this);
buscaramigo.addActionListener(this);
borraramigo.addActionListener(this);
modificaramigo.addActionListener(this);

//Añiadimos las opciones al menu herramientas


mgesagenda.add(consultaragenda);
mgesagenda.add(buscaramigo);
mgesagenda.add(borraramigo);
mgesagenda.add(modificaramigo);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLayout(new BorderLayout());
setSize(700,300);

JLabel nlist = new JLabel("Contenido agenda");


listaAmigos = new JList();

add(nlist,BorderLayout.NORTH);
add(listaAmigos,BorderLayout.CENTER);
setVisible(true);
}
@Override
public void actionPerformed(ActionEvent e) {

//Obtenemos lo que ha pulsado el usuario y si cuncide se ejecutara lo que se haya


indicado
if(e.getSource() == salir)
{
setVisible(false);
System.exit(0);
}

if(e.getSource() == nuevaagenda)
{
FormularioNuevaAgenda fm = new FormularioNuevaAgenda();
fm.setVisible(true);
}

if(e.getSource() == consultaragenda)
{
modelo.removeAllElements();//Limpiamos el jlist
Agenda a = new Agenda(listaAmigos,modelo);//Indicamos al contructor jlist y modelo
a.consultaFichero();
}

if(e.getSource() == insertaramigo)
{
FormularioInsertarAmigo fia = new FormularioInsertarAmigo();
fia.setVisible(true);
}

if(e.getSource() == buscaramigo)
{
FormularioBuscarAmigo fba = new FormularioBuscarAmigo();
fba.setVisible(true);
}

if(e.getSource() == modificaramigo)
{
FormularioModificarAmigo fma2 = new FormularioModificarAmigo();
fma2.setVisible(true);
}

if(e.getSource() == borraramigo)
{
FormularioBorrarAmigo fba = new FormularioBorrarAmigo();
fba.setVisible(true);
}

if(e.getSource() == borraragenda)
{
String rutaarchivo = "C:\\Users\\jaime\\Desktop\\agendagui.txt";
File f = new File(rutaarchivo);

int opcion = JOptionPane.showOptionDialog(null, "¿Estas Seguro?","Borrar Agenda",


JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE, null, null,
null);

if(opcion == JOptionPane.YES_OPTION)//Borraremos el fichero si es afirmativo


{
f.delete();
}
}

}
}

package Ejercicio1;
import java.awt.*;
import java.awt.event.*;
import java.io.File;
import javax.swing.*;
/**
*
* @author jaime
*/
public class FormularioNuevaAgenda extends JFrame {

private JLabel nombreyape,direccion,localidad,edad,fechna,salario,amigo;


private JTextField tnombreyape,tdireccion,tlocalidad,tedad,tfechna,tsalario;
private JButton aniadir,nagenda;

public FormularioNuevaAgenda()
{
super("Nueva Agenda");
//Poner pantalla en el centro
Dimension pantalla = Toolkit.getDefaultToolkit().getScreenSize();
int height = pantalla.height;
int width = pantalla.width;
setSize(width/2, height/2);
setLocationRelativeTo(null);

setLayout(new BorderLayout());

JPanel pNorte = crearPNorte();


add(pNorte,BorderLayout.NORTH);

JPanel pSur = crearPSur();


add(pSur,BorderLayout.SOUTH);

setSize(300,200);
setVisible(true);
}

private JPanel crearPNorte()


{
//Usamos los textfield para que el usuario untroduzca los datos
//estos se añaden juntos a los label al panel
JPanel p = new JPanel(new GridLayout(6, 2));

nombreyape = new JLabel("Nombre y Apellidos:");


p.add(nombreyape);

tnombreyape = new JTextField(30);


tnombreyape.setEnabled(false);//Deshabilitamos textfield
p.add(tnombreyape);

direccion = new JLabel("Direccion:");


p.add(direccion);

tdireccion = new JTextField(30);


tdireccion.setEnabled(false);
p.add(tdireccion);

localidad = new JLabel("Localidad:");


p.add(localidad);

tlocalidad = new JTextField(30);


tlocalidad.setEnabled(false);
p.add(tlocalidad);

edad = new JLabel("Edad:");


p.add(edad);

tedad = new JTextField(30);


tedad.setEnabled(false);
p.add(tedad);

fechna = new JLabel("Fecha de Nacimiento:");


p.add(fechna);

tfechna = new JTextField(30);


tfechna.setEnabled(false);
p.add(tfechna);

salario = new JLabel("Salario:");


p.add(salario);

tsalario = new JTextField(30);


tsalario.setEnabled(false);
p.add(tsalario);

return p;
}

private JPanel crearPSur()


{
JPanel p = new JPanel(new FlowLayout(FlowLayout.CENTER));

aniadir = new JButton("Añadir Amigo");


aniadir.setEnabled(false);
aniadir.addMouseListener(new VigilaBoton());//Al hacer clic se ejecuta el la clase
p.add(aniadir);

nagenda = new JButton("Nueva Agenda");


nagenda.addMouseListener(new NAgenda());//Al hacer clic se ejecuta el la clase
p.add(nagenda);

return p;
}

class NAgenda extends MouseAdapter


{
@Override
public void mousePressed(MouseEvent e){}

@Override
public void mouseReleased(MouseEvent e)
{
String rutaarchivo = "C:\\Users\\jaime\\Desktop\\agendagui.txt";

File f = new File(rutaarchivo);


f.delete();//Eliminamos la agenda anterior

//Activamos textfield
tnombreyape.setEnabled(true);
tdireccion.setEnabled(true);
tlocalidad.setEnabled(true);
tedad.setEnabled(true);
tfechna.setEnabled(true);
tsalario.setEnabled(true);

aniadir.setEnabled(true);//Activamos boton de añadir amigo


nagenda.setEnabled(false);//Descativamos boton de nueva agenda
}
}

class VigilaBoton extends MouseAdapter


{
@Override
public void mousePressed(MouseEvent e){}

@Override
public void mouseReleased(MouseEvent e)
{

//Capturamos la info de los textfield y se la pasamos al contructor


String nombreyapellido = tnombreyape.getText();
String direccion = tdireccion.getText();
String localidad = tlocalidad.getText();
String edad = tedad.getText();
String fechnacimiento = tfechna.getText();
String sueldo = tsalario.getText();

Agenda a = new
Agenda(nombreyapellido,direccion,localidad,edad,fechnacimiento,sueldo);

String rutaarchivo = "C:\\Users\\jaime\\Desktop\\agendagui.txt";

a.creaAgenda(rutaarchivo);//Llamamos al metodo para crear una nueva agenda

//Reseteamos nuestros textfield


tnombreyape.setText(null);
tdireccion.setText(null);
tlocalidad.setText(null);
tedad.setText(null);
tfechna.setText(null);
tsalario.setText(null);
}
}

package Ejercicio1;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.border.*;
/**
*
* @author jaime
*/
public class FormularioModificarAmigo extends JFrame {

private JLabel nombreyape,direccion,localidad,edad,fechna,salario;


private JTextField tnombreyape,tdireccion,tlocalidad,tedad,tfechna,tsalario,tmod;
private JButton bmod,aniadir;
private Border borde;
private String amod;//Aqui se almacena el nombre que deseamos modificar

public FormularioModificarAmigo()
{
super("Modificar Amigo");

//Poner pantalla en el centro


Dimension pantalla = Toolkit.getDefaultToolkit().getScreenSize();
int height = pantalla.height;
int width = pantalla.width;
setSize(width/2, height/2);
setLocationRelativeTo(null);

//Introducimos layout
setLayout(new BorderLayout());

//Introducimos paneles que forman del frame


JPanel pNorte = crearPNorte();
add(pNorte,BorderLayout.NORTH);

JPanel pCentral = crearPCentral();


add(pCentral,BorderLayout.CENTER);

JPanel pSur = crearPSur();


add(pSur,BorderLayout.SOUTH);
setSize(400,250);
setVisible(true);
}

private JPanel crearPNorte()


{
JPanel p = new JPanel(new BorderLayout());

JLabel nomyape = new JLabel("Nombre y Apellidos:");


p.add(nomyape,BorderLayout.WEST);

tmod = new JTextField(15);


p.add(tmod,BorderLayout.CENTER);

bmod = new JButton("Modificar Amigo");


bmod.addMouseListener(new VigilaBotonModificar());//Al hacer clic se ejecuta la clase

p.add(bmod,BorderLayout.EAST);

return p;
}

private JPanel crearPCentral()


{
JPanel p = new JPanel(new GridLayout(6, 2));

TitledBorder titleBorder =
BorderFactory.createTitledBorder(borde,"Modificacion");//Creamos un borde para el panel

p.setBorder(titleBorder);//Introducimos el borde al panel

nombreyape = new JLabel("Nuevo Nombre y Apellido:");


p.add(nombreyape);

tnombreyape = new JTextField(30);


tnombreyape.setEnabled(false);//Deshabilitamos los jtextfield con setEnabled(alse)
p.add(tnombreyape);

direccion = new JLabel("Nueva Direccion:");


p.add(direccion);

tdireccion = new JTextField(30);


tdireccion.setEnabled(false);
p.add(tdireccion);

localidad = new JLabel("Nuevo Localidad:");


p.add(localidad);
tlocalidad = new JTextField(30);
tlocalidad.setEnabled(false);
p.add(tlocalidad);

edad = new JLabel("Nuevo Edad:");


p.add(edad);

tedad = new JTextField(30);


tedad.setEnabled(false);
p.add(tedad);

fechna = new JLabel("Nueva Fecha de Nacimiento:");


p.add(fechna);

tfechna = new JTextField(30);


tfechna.setEnabled(false);
p.add(tfechna);

salario = new JLabel("Nuevo Salario:");


p.add(salario);

tsalario = new JTextField(30);


tsalario.setEnabled(false);
p.add(tsalario);

return p;
}

private JPanel crearPSur()


{
JPanel p = new JPanel(new FlowLayout(FlowLayout.CENTER));

aniadir = new JButton("Añiadir Amigos Modificado");


aniadir.setEnabled(false);
aniadir.addMouseListener(new VigilaBotonAniadir());//Al hacer clic se ejecuta la clase

p.add(aniadir);
return p;
}

class VigilaBotonModificar extends MouseAdapter


{
@Override
public void mousePressed(MouseEvent e){}

@Override
public void mouseReleased(MouseEvent e)
{

amod = tmod.getText();//tomamos la informacion del textfield

//Al hacer clic se habilitan los textfield y se deshabilita el boton de modificar


aniadir.setEnabled(true);
tnombreyape.setEnabled(true);
tdireccion.setEnabled(true);
tlocalidad.setEnabled(true);
tedad.setEnabled(true);
tfechna.setEnabled(true);
tsalario.setEnabled(true);

bmod.setEnabled(false);

}
}

class VigilaBotonAniadir extends MouseAdapter


{
@Override
public void mousePressed(MouseEvent e){}

@Override
public void mouseReleased(MouseEvent e)
{
//Extraemos info de los textfield y lo pasamos a la clase,junto al contenido del textfield
amod a la hora de instanciar la clase
String nombreyapellido = tnombreyape.getText();
String direccion = tdireccion.getText();
String localidad = tlocalidad.getText();
String edad = tedad.getText();
String fechnacimiento = tfechna.getText();
String sueldo = tsalario.getText();

Agenda a = new
Agenda(nombreyapellido,direccion,localidad,edad,fechnacimiento,sueldo,amod);

a.modificaRegistro();//llamamos al boton modificar registro

setVisible(false);//ocultamos el frame de modificar

}
}
}
package Ejercicio1;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
/**
*
* @author jaime
*/
public class FormularioInsertarAmigo extends JFrame{
private JLabel nombreyape,direccion,localidad,edad,fechna,salario;
private JTextField tnombreyape,tdireccion,tlocalidad,tedad,tfechna,tsalario;
private JButton insertar;

public FormularioInsertarAmigo()
{
super("Insertar Amigo");

//Poner pantalla en el centro


Dimension pantalla = Toolkit.getDefaultToolkit().getScreenSize();
int height = pantalla.height;
int width = pantalla.width;
setSize(width/2, height/2);
setLocationRelativeTo(null);

//Introducimos layout
setLayout(new BorderLayout());

//Introducimos los paneles


JPanel pNorte = crearPNorte();
add(pNorte,BorderLayout.NORTH);

JPanel pSur = crearPSur();


add(pSur,BorderLayout.SOUTH);

setSize(300,200);
setVisible(true);
}

private JPanel crearPNorte()


{
//Usamos los textfield para que el usuario untroduzca los datos
//estos se añaden juntos a los label al panel
JPanel p = new JPanel(new GridLayout(6, 2));

nombreyape = new JLabel("Nombre y Apellido:");


p.add(nombreyape);

tnombreyape = new JTextField(30);


p.add(tnombreyape);

direccion = new JLabel("Direccion:");


p.add(direccion);

tdireccion = new JTextField(30);


p.add(tdireccion);

localidad = new JLabel("Localidad:");


p.add(localidad);

tlocalidad = new JTextField(30);


p.add(tlocalidad);

edad = new JLabel("Edad:");


p.add(edad);

tedad = new JTextField(30);


p.add(tedad);

fechna = new JLabel("Fecha de Nacimiento:");


p.add(fechna);

tfechna = new JTextField(30);


p.add(tfechna);

salario = new JLabel("Salario:");


p.add(salario);

tsalario = new JTextField(30);


p.add(tsalario);

return p;
}

private JPanel crearPSur()


{
JPanel p = new JPanel(new FlowLayout(FlowLayout.CENTER));

insertar = new JButton("Insertar Amigo");


insertar.addMouseListener(new VigilaBoton());//Al hacer clic se ejecuta el la clase
p.add(insertar);
return p;
}

class VigilaBoton extends MouseAdapter


{
@Override
public void mousePressed(MouseEvent e){}

@Override
public void mouseReleased(MouseEvent e)
{
//Extraemos los datos de los textfield y se lo pasamos al contructor a la hora de
instanciar la clase Agenda
String nombreyapellido = tnombreyape.getText();
String direccion = tdireccion.getText();
String localidad = tlocalidad.getText();
String edad = tedad.getText();
String fechnacimiento = tfechna.getText();
String sueldo = tsalario.getText();

Agenda a = new
Agenda(nombreyapellido,direccion,localidad,edad,fechnacimiento,sueldo);

String rutaarchivo = "C:\\Users\\jaime\\Desktop\\agendagui.txt";

a.altaRegistro(rutaarchivo);//ejecutamos el metod altaRegistro para insertar un nuevo


registro

//Reiniciamos los textfield para la introduccion de nuevos datos


tnombreyape.setText(null);
tdireccion.setText(null);
tlocalidad.setText(null);
tedad.setText(null);
tfechna.setText(null);
tsalario.setText(null);
}
}
}

package Ejercicio1;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.border.*;
/**
*
* @author jaime
*/
public class FormularioBuscarAmigo extends JFrame {

private JButton buscar;


private JTextField tnomyape;
private JLabel nomyape;
private JList lista;
private Border borde;

private DefaultListModel modelo = new DefaultListModel();

public FormularioBuscarAmigo()
{
super("Buscar Amigo");

//Poner pantalla en el centro


Dimension pantalla = Toolkit.getDefaultToolkit().getScreenSize();
int height = pantalla.height;
int width = pantalla.width;
setSize(width/2, height/2);
setLocationRelativeTo(null);

//Layout del frame


setLayout(new BorderLayout());

//Panel que forman el frame


JPanel pNorte = crearPNorte();
add(pNorte,BorderLayout.NORTH);

JPanel pCentral = crearPCentral();


add(pCentral,BorderLayout.CENTER);

JPanel pSur = crearPSur();


add(pSur,BorderLayout.SOUTH);

setSize(300,200);//tamanio asignado al frame


setVisible(true);
}

private JPanel crearPNorte()


{
JPanel p = new JPanel(new GridLayout(1, 1));

nomyape = new JLabel("Nombre y Apellidos:");


p.add(nomyape);

tnomyape = new JTextField(30);


p.add(tnomyape);

return p;
}

private JPanel crearPCentral()


{
JPanel p = new JPanel(new BorderLayout());

TitledBorder titleBorder = BorderFactory.createTitledBorder(borde,"Resultado");

p.setBorder(titleBorder);

lista = new JList();


p.add(lista,BorderLayout.CENTER);

return p;
}

private JPanel crearPSur()


{
JPanel p = new JPanel(new FlowLayout(FlowLayout.CENTER));

buscar = new JButton("Buscar Amigo");


buscar.addMouseListener(new VigilaBoton());//Al presionar el boton se ejecutará la clase
vigila boton
p.add(buscar);
return p;
}

class VigilaBoton extends MouseAdapter


{
@Override
public void mousePressed(MouseEvent e){}

@Override
public void mouseReleased(MouseEvent e)
{
String nombreyapellido = tnomyape.getText();//Obtenemos el contenido del textfield

modelo.removeAllElements();//Limpiamos los elementos del JList


Agenda a = new Agenda(lista,modelo,nombreyapellido);//Le pasamos a traves del
contructor a la clase agenda, el jlist,el modelo y los nombresyapellidos extraidos

a.consultaRegistro();//Llamamos al metodo para consultar al registro

tnomyape.setText(null);//baciamos el contenido del textfield

}
}
}

package Ejercicio1;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
/**
*
* @author jaime
*/
public class FormularioBorrarAmigo extends JFrame {

private JButton borrar;


private JTextField tnomyape;
private JLabel nomyape;

public FormularioBorrarAmigo()
{
super("Borrar Amigo");

//Poner pantalla en el centro


Dimension pantalla = Toolkit.getDefaultToolkit().getScreenSize();
int height = pantalla.height;
int width = pantalla.width;
setSize(width/2, height/2);
setLocationRelativeTo(null);

//Layout del frame


setLayout(new BorderLayout());

//Aniadimos los paneles al frame


JPanel pCentral = crearPCentral();
add(pCentral,BorderLayout.CENTER);

JPanel pSur = crearPSur();


add(pSur,BorderLayout.SOUTH);

pack();//Hacemos que se ajuste el frame a los elementos que lo componen


setVisible(true);
}

private JPanel crearPCentral()


{
JPanel p = new JPanel(new BorderLayout());

nomyape = new JLabel("Nombre y Apellidos:");


p.add(nomyape,BorderLayout.CENTER);

tnomyape = new JTextField(15);


p.add(tnomyape,BorderLayout.EAST);

return p;
}
private JPanel crearPSur()
{
JPanel p = new JPanel(new FlowLayout(FlowLayout.CENTER));

borrar = new JButton("Borrar Amigo");


borrar.addMouseListener(new VigilaBoton());//En el momento de hacer clic en el boton se
ejecutara la clase VigilaBoton
p.add(borrar);
return p;
}

class VigilaBoton extends MouseAdapter


{
@Override
public void mousePressed(MouseEvent e){}

@Override
public void mouseReleased(MouseEvent e)
{
String nombreyapellido = tnomyape.getText();//Obtenemos el contenido del textfield

Agenda a = new Agenda(nombreyapellido);//se lo pasamos a la clase donde se


encuentra la funcion de borrado a traves del constructor de la clase agenda

String rutaarchivo = "C:\\Users\\jaime\\Desktop\\agendagui.txt";

int opcion = JOptionPane.showOptionDialog(null, "¿Estas Seguro?","Borrar Amigo", //A


la hora de apretar el boton nos saldrá el mensaje de si estamos eguros
JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE, null, null,
null);

if(opcion == JOptionPane.YES_OPTION)
{
a.bajaRegistro(rutaarchivo);//Si la respuesta es afirmativa se ejecutará el metodo,
realizando el borrado del registro
}
tnomyape.setText(null);//Borra el contenido del textfield

}
}

package Ejercicio1;

import java.io.*;
import java.util.*;
import javax.swing.*;

/**
*
* @author jaime
*/
public class Agenda {

private String amod;


private String nombreyapellido;
private String direccion;
private String localidad;
private String edad;
private String fechnacimiento;
private String sueldo;
private String rutaarchivo;

private JList lista;


private DefaultListModel modelo = new DefaultListModel();

//Se crean los contructores necesarios dependiendo de las necesidades, a la hora de


introducir la informacion a los
//diferentes metodos
public Agenda(String nombreyapellido,String direccion,String localidad,String edad,
String fechnacimiento, String sueldo)
{
this.nombreyapellido = nombreyapellido;
this.direccion = direccion;
this.localidad = localidad;
this.edad = edad;
this.fechnacimiento = fechnacimiento;
this.sueldo = sueldo;
}

public Agenda(String nombreyapellido,String direccion,String localidad,String edad,


String fechnacimiento, String sueldo, String amod)
{
this.nombreyapellido = nombreyapellido;
this.direccion = direccion;
this.localidad = localidad;
this.edad = edad;
this.fechnacimiento = fechnacimiento;
this.sueldo = sueldo;
this.amod = amod;
}

public Agenda(String nombreyapellido)


{
this.nombreyapellido = nombreyapellido;
}

public Agenda(){}

public Agenda(JList lista, DefaultListModel modelo)


{
this.lista = lista;
this.modelo = modelo;
}

public Agenda(JList lista, DefaultListModel modelo,String nombreyapellido)


{
this.lista = lista;
this.modelo = modelo;
this.nombreyapellido = nombreyapellido;
}

public void creaAgenda(String rutaarchivo)


{
try
{
FileWriter fw = new FileWriter(rutaarchivo,true);
BufferedWriter bw = new BufferedWriter(fw);

//Pasamos la info obtenida del contructor al metodo para escribirla en el fichero


bw.write(nombreyapellido);
bw.write(","+direccion);
bw.write(","+localidad);
bw.write(","+edad);
bw.write(","+fechnacimiento);
bw.write(","+sueldo);
bw.newLine();

if(bw!=null)
{
bw.close();
fw.close();
}

}
catch(IOException e)
{
System.out.println("Error E/S");
}
catch(Exception e)
{
e.printStackTrace();
}

public void altaRegistro(String rutaarchivo)


{

try
{
FileWriter fw = new FileWriter(rutaarchivo,true);
BufferedWriter bw = new BufferedWriter(fw);

//Pasamos la info obtenida del contructor al metodo para escribirla en el fichero


bw.write(nombreyapellido);

bw.write(","+direccion);

bw.write(","+localidad);

bw.write(","+edad);

bw.write(","+fechnacimiento);

bw.write(","+sueldo);

bw.newLine();

if(bw!=null)
{
bw.close();
fw.close();
}

}
catch(IOException e)
{
System.out.println("Error E/S");
}
catch(Exception e)
{
e.printStackTrace();
}
}

public void bajaRegistro(String nombref){

try
{
File original = new File(nombref);//Indicamos el fichero donde queremos eliminar un
registro ORIGINAL
File temporal = new File(original.getAbsolutePath()+".txt");//Creamos un fichero auxiliar
o temporal
//donde se encontrará una copia del original

//Usaremos este flujo y filtro para leer el archivo origen


FileReader fr = new FileReader(nombref);
BufferedReader br = new BufferedReader(fr);

//Usaremos este flujo y filtro para escribir en el archivo temporal


FileWriter fw = new FileWriter(temporal);
BufferedWriter bw = new BufferedWriter(fw);

String texto = "";//Se almacenara el contenido de las lineas del fichero

//Procedemos a la lectura del archivo original y escritura del temporal, salvo el registro
a eliminar
while(texto!=null)//Mientras la cadena de texto sea distinto de null se seguirá
ejecutando el while
{
texto = br.readLine();

if(texto!=null)//Nos servirá para poder eliminar los valores null que se puedan ir
generando durante la lectura de la variable
{
//Obtenemos la posicion del nombre que queremos dar de baja
int pos = texto.indexOf(",");
String nombre = texto.substring(0,pos);

if(!nombre.equals(nombreyapellido))//Con este if introduciremos todos los


nombres exceptuando el que queremos eliminar
{
bw.write(texto);//Escribimos nombre en el archivo temporal
bw.newLine();
}

}
}

//Cerramos los filtros y los flujos


br.close();
bw.close();
fr.close();
br.close();

//Eliminamos el fichero original


original.delete();

//Cambiamos el nombre del archivo temporal por el del original


temporal.renameTo(original);

JOptionPane.showMessageDialog(null, "Amigo Borrado");


}
catch(FileNotFoundException e)
{
System.out.println("No se ha encontrado el fichero");
}
catch(IOException e)
{
System.out.println("Error E/S");
}
catch(Exception e)
{
System.out.println("Error de programa");
}
}

String nombref = "C:\\Users\\jaime\\Desktop\\agendagui.txt";


public void consultaFichero(){

String texto = "";


try
{
FileReader fr = new FileReader(nombref);
BufferedReader br = new BufferedReader(fr);

while(texto!=null)//Mientras la cadena de texto sea distinto de null se seguirá


ejecutando el while
{
texto = br.readLine();
if(texto!=null) //Nos servirá para poder eliminar los valores null que se puedan ir
generando durante la lectura de la variable
{
modelo.addElement(texto);//Le pasamos el modelo obtenido del contructor para
capturar la informacion
lista.setModel(modelo);//Mostramos la info del fichero a traves del JList
proporcionado por el contructor
}
}
br.close();

}
catch(FileNotFoundException e)
{
System.out.println("Fichero no encontrado");
}
catch(IOException e)
{
System.out.println("Error de programa");
}
}

public void consultaRegistro(){

String nombre = "";


String texto = "";
try
{
FileReader fr = new FileReader(nombref);
BufferedReader br = new BufferedReader(fr);

while(texto!=null)//Mientras la cadena de texto sea distinto de null se seguirá


ejecutando el while
{
texto = br.readLine();
if(texto!=null) //Nos servirá para poder eliminar los valores null que se puedan ir
generando durante la lectura de la variable
{
//Obtenemos la posicion del nombre que queremos dar de baja
int pos = texto.indexOf(",");
nombre = texto.substring(0,pos);

if(nombre.equals(nombreyapellido))
{
modelo.addElement(texto);
lista.setModel(modelo);
}
}

}
br.close();

}
catch(FileNotFoundException e)
{
System.out.println("Fichero no encontrado");
}
catch(IOException e)
{
System.out.println("Error de programa");
}
}

public void modificaRegistro(){

File original = new File(nombref);//Indicamos el fichero donde queremos eliminar un


registro ORIGINAL
File temporal = new File(original.getAbsolutePath()+".txt");//Creamos un fichero auxiliar o
temporal
//donde se encontrará una copia del original
try
{
//Usaremos este flujo y filtro para leer el archivo origen
FileReader fr = new FileReader(nombref);
BufferedReader br = new BufferedReader(fr);

//Usaremos este flujo y filtro para escribir en el archivo temporal


FileWriter fw = new FileWriter(temporal,true);
BufferedWriter bw = new BufferedWriter(fw);

String texto = "";//Se almacenara el contenido de las lineas del fichero

//Procedemos a la lectura del archivo original y escritura del temporal, salvo el registro
a eliminar
while(texto!=null)//Mientras la cadena de texto sea distinto de null se seguirá
ejecutando el while
{
texto = br.readLine();

if(texto!=null)//Nos servirá para poder eliminar los valores null que se puedan ir
generando durante la lectura de la variable
{

StringTokenizer token = new StringTokenizer(texto,",");//Creamos una clase


StringTokenizer para poder separar la info de la cadena

//Comparamos el nombre con la variabe (amod), proporcionada


if(token.nextToken().equals(amod))//Si se cumple esta condicion procedemos a
modificar la info del amigo
{
texto=nombreyapellido+","+direccion+","+localidad+","+edad+","+fechnacimiento+","+sueldo;

}
bw.write(texto);//Escribimos nombre en el archivo temporal
bw.newLine();
}
}

//Cerramos los filtros y los flujos


br.close();
bw.close();
fr.close();
br.close();

//Eliminamos el fichero original


original.delete();

//Cambiamos el nombre del archivo temporal por el del original


temporal.renameTo(original);

JOptionPane.showMessageDialog(null, "Modificacion realizada con existo");

}
catch(FileNotFoundException e)
{
System.out.println("No se ha encontrado el archivo ");
}
catch(IOException e)
{
System.out.println("Error E/S");
}
catch(Exception e)
{
System.out.println("Error de programa");
}
}
}
Diagrama de clases
2.- Busca información sobre herramientas para desarrollar interfaces gráficas para Java.

Además de la herramienta Windows Builder que podemos encontrar en Netbeans, existen


otras como, por ejemplo:

JFormDesigner: es un diseñador de GUI profesional para interfaces de usuario Java ™ Swing.


Su excelente soporte para MigLayout , JGoodies FormLayout , GroupLayout ( Diseño libre ),
TableLayout y GridBagLayout facilita la creación de formularios de aspecto profesional .

Url: https://www.formdev.com/

JVider: es una sencilla herramienta de diseño gráfico que permite crear un entorno visual para
todo tipo de aplicaciones Java Swing y applets.

Url: http://www.jvider.com/

3.- Partiendo de las clases de la apliación de fichas de libros GestionaBiblioteca, crear una
apliación de nombre FicheroLibros con interfaz gráfico que sustituya la clase principal
GestionaBiblioteca y reutilice las clases LectorF, Biblioteca y Libro. Crear una barra de botones
que tengan las siguientes
funciones:

• Anterior que activa la ficha anterior, si ésta es la primera, mostrar la última


• Siguiente, muestra la ficha de libros siguiente, si llega a la última ficha muestra la
primera
• Insertar que inserta una ficha en blanco que elusuario puede modificar.
• Borrar que elimina la ficha que se muestra, después de borrar una ficha se activa la
próxima ficha no nula.

Al iniciar la ejecución el constructor de la clase principal recupera los libros de la biblioteca,
con las uitlidades de la clase LectorF y antes de terminar, en el evento de cerrar ventan, se
ordena el array de fichas y se archivan todas.

Utiliza una herramienta gráfica (por ejemplo el pluging WindowBuilder ) para realizarlo.

package Ejercicio3;
import java.io.*;
/**
*
* @author jaime
*/
public class BibliotecaGUI extends javax.swing.JFrame {

private int nMaxLibros = 3;


private Biblioteca bib = new Biblioteca(nMaxLibros);
/**
* Creates new form BibliotecaGUI
*/
public BibliotecaGUI() {
initComponents();
}

/**
* This method is called from within the constructor to initialize the form.
* WARNING: Do NOT modify this code. The content of this method is always
* regenerated by the Form Editor.
*/
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {

jLautor = new javax.swing.JLabel();


jLtitulo = new javax.swing.JLabel();
jLisbn = new javax.swing.JLabel();
tautor = new javax.swing.JTextField();
ttitulo = new javax.swing.JTextField();
tisbn = new javax.swing.JTextField();
bInsertar = new javax.swing.JButton();
bSiguiente = new javax.swing.JButton();
bAtras = new javax.swing.JButton();
bBorrar = new javax.swing.JButton();

setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

jLautor.setText("Autor:");

jLtitulo.setText("Titulo:");

jLisbn.setText("ISBN:");

ttitulo.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
ttituloActionPerformed(evt);
}
});

bInsertar.setText("Insertar");
bInsertar.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseReleased(java.awt.event.MouseEvent evt) {
bInsertarMouseReleased(evt);
}
});

bSiguiente.setText("Siguiente");
bSiguiente.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseReleased(java.awt.event.MouseEvent evt) {
bSiguienteMouseReleased(evt);
}
});

bAtras.setText("Atras");

bBorrar.setText("Borrar");
bBorrar.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseReleased(java.awt.event.MouseEvent evt) {
bBorrarMouseReleased(evt);
}
});

javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());


getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGap(70, 70, 70)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
.addGroup(layout.createSequentialGroup()

.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jLtitulo)
.addComponent(jLisbn))
.addGap(19, 19, 19)

.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(ttitulo, javax.swing.GroupLayout.PREFERRED_SIZE, 297,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(tisbn)))
.addGroup(layout.createSequentialGroup()
.addComponent(bInsertar)
.addGap(18, 18, 18)
.addComponent(bSiguiente)
.addGap(27, 27, 27)
.addComponent(bAtras)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(bBorrar)))
.addGroup(layout.createSequentialGroup()
.addComponent(jLautor)
.addGap(18, 18, 18)
.addComponent(tautor, javax.swing.GroupLayout.PREFERRED_SIZE, 297,
javax.swing.GroupLayout.PREFERRED_SIZE)))
.addContainerGap(77, Short.MAX_VALUE))
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGap(47, 47, 47)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLautor)
.addComponent(tautor, javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGap(18, 18, 18)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLtitulo)
.addComponent(ttitulo, javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGap(18, 18, 18)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLisbn)
.addComponent(tisbn, javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 35,
Short.MAX_VALUE)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(bInsertar)
.addComponent(bSiguiente)
.addComponent(bAtras)
.addComponent(bBorrar))
.addGap(25, 25, 25))
);

pack();
}// </editor-fold>

private void ttituloActionPerformed(java.awt.event.ActionEvent evt) {


// TODO add your handling code here:
}

private void bInsertarMouseReleased(java.awt.event.MouseEvent evt) {

//Obtenemos la informacion de los textfield


String autor = tautor.getText();
String titulo = ttitulo.getText();
String isbn = tisbn.getText();

//Se lo pasamos por constructor a la clase y la llamamos


Libro lib = new Libro(autor,titulo,isbn);
String rutaarchivo = "C:\\Users\\jaime\\Desktop\\libro.txt";

//hacemos uso de los metodos aniadirLibro y archivarL


try
{
FileWriter fw = new FileWriter(rutaarchivo,true);
BufferedWriter bw = new BufferedWriter(fw);

bib.aniadirLibro(lib);
bib.archivaL(bw);

}
catch(Exception e)
{
System.out.println("Error de programa");
}

tautor.setText(null);
ttitulo.setText(null);
tisbn.setText(null);
}

private void bBorrarMouseReleased(java.awt.event.MouseEvent evt) {

String isbn = tisbn.getText();// Obtenemos la informacion del textfield


bib.borraLibro(isbn);//llamamos al metodo a traves de la clase y le proporcionamos el isbn
tisbn.setText(null);//reseteamos el textfield
}

private void bSiguienteMouseReleased(java.awt.event.MouseEvent evt) {

/**
* @param args the command line arguments
*/
public static void main(String args[]) {
/* Set the Nimbus look and feel */
//<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
/* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
* For details see
http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html
*/
try {
for (javax.swing.UIManager.LookAndFeelInfo info :
javax.swing.UIManager.getInstalledLookAndFeels()) {
if ("Nimbus".equals(info.getName())) {
javax.swing.UIManager.setLookAndFeel(info.getClassName());
break;
}
}
} catch (ClassNotFoundException ex) {

java.util.logging.Logger.getLogger(BibliotecaGUI.class.getName()).log(java.util.logging.Level.SE
VERE, null, ex);
} catch (InstantiationException ex) {

java.util.logging.Logger.getLogger(BibliotecaGUI.class.getName()).log(java.util.logging.Level.SE
VERE, null, ex);
} catch (IllegalAccessException ex) {

java.util.logging.Logger.getLogger(BibliotecaGUI.class.getName()).log(java.util.logging.Level.SE
VERE, null, ex);
} catch (javax.swing.UnsupportedLookAndFeelException ex) {

java.util.logging.Logger.getLogger(BibliotecaGUI.class.getName()).log(java.util.logging.Level.SE
VERE, null, ex);
}
//</editor-fold>

/* Create and display the form */


java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new BibliotecaGUI().setVisible(true);
}
});
}

// Variables declaration - do not modify


private javax.swing.JButton bAtras;
private javax.swing.JButton bBorrar;
private javax.swing.JButton bInsertar;
private javax.swing.JButton bSiguiente;
private javax.swing.JLabel jLautor;
private javax.swing.JLabel jLisbn;
private javax.swing.JLabel jLtitulo;
private javax.swing.JTextField tautor;
private javax.swing.JTextField tisbn;
private javax.swing.JTextField ttitulo;
// End of variables declaration
}

package Ejercicio3;

/**
*
* @author jaime
*/
/** La clase Biblioteca modeliza una estanteria de una biblioteca*/
import java.io.*;
import javax.swing.JOptionPane;
public class Biblioteca
{
Libro estanteria[];
public Biblioteca(int nMaxLibros)
{
estanteria = new Libro[nMaxLibros];
}

/**Da de alta un nuevo libro*/


public boolean aniadirLibro(Libro libroNuevo)
{
for( int i=0; i<estanteria.length;i++)
{
if(estanteria[i]==null)
{
estanteria[i] = libroNuevo;

return true;
}
}
return false;
}

/**Archiva los libros de la biblioteca*/


public int archivaL(BufferedWriter f) throws Exception
{
int nLibros=0;
for( int i=0; i<estanteria.length; i++)
{
if(estanteria[i] != null)
{
f.write(estanteria[i].toString());
f.newLine();
nLibros++;
}
}
return nLibros;
}
public int recuperaLibros(BufferedReader f) throws Exception
{
String texto=" ";
int nLibros=0;
while(texto != null)
{
texto = f.readLine();
if(texto != null)
{
int posi=texto.indexOf(",");
String autor=texto.substring(0,posi);
String resto = texto.substring(posi+2);
posi=resto.indexOf(",");
String titulo=resto.substring(0,posi);
posi=resto.indexOf(",");
String r2 = resto.substring(posi+2);
String iSBN=r2.substring(0,r2.length());
Libro l1= new Libro (autor,titulo,iSBN);
aniadirLibro(l1);
nLibros++;
}
}
return nLibros;
}
public boolean borraLibro(String iSBN)
{
for(int i=0; i<estanteria.length; i++)
if(estanteria[i] != null)
if(estanteria[i].obtenerISBN().equals(iSBN))
{
estanteria[i]= null;
JOptionPane.showMessageDialog(null, "Libro borrado");
return true;

}
return false;
}
public Libro localizaLibro(String iSBN)
{
for(int i=0; i<estanteria.length; i++)
if( estanteria[i] != null)
if(estanteria[i].obtenerISBN().equals(iSBN))
return estanteria[i];

return null;
}
public void listaLibros()
{
Libro aux[]= new Libro[estanteria.length];
for(int i=0; i<estanteria.length; i++)
if(estanteria[i] != null)
aux[i]= estanteria[i];
ordena(aux);
for(int i =0; i<aux.length; i++)
if(aux[i] != null)
System.out.println(aux[i]);
}
/**Compara textos para ordenación*/
public int comparaTextos(String t1, String t2)
{
int longitud;
t1=t1.toUpperCase();
t2=t2.toUpperCase();

if(t1.length()>t2.length())
longitud = t2.length();
else
longitud = t1.length();

for (int i=0;i<longitud;i++)


{
if (t1.charAt(i)<t2.charAt(i)) return -1;
if (t1.charAt(i)>t2.charAt(i)) return 1;
if(t1.charAt(i)=='\0') return -1;
if(t2.charAt(i)=='\0') return 1;
}
return 0;
}
public void ordena(Libro aux[])
{
Libro temp;
for(int j = aux.length; --j>=0;)
for(int i=0; i<j; i++)
if(aux[i+1] != null && aux[i] != null)
if(comparaTextos(aux[i+1].obtenerAutor(),
aux[i].obtenerAutor())<0)
{
temp=aux[i];
aux[i]=aux[i+1];
aux[i+1]=temp;
}
}
}

package Ejercicio3;

/**
*
* @author jaime
*/
import java.util.*;
import java.io.*;
public class LeerFichero
{
private String rutaf="C:\\Users\\jaime\\Desktop\\libro.txt";
private String texto="";

public String Lfichero ()


{
try
{
Scanner sc = new Scanner(new File(rutaf));
while (sc.hasNextLine())
{
texto = texto + sc.nextLine();
}
}
catch(Exception e){}

return texto;
}
}

package Ejercicio3;

/**
*
* @author jaime
*/
import java.io.*;
public class Libro
{
private String autor,titulo,iSBN;

public Libro (String autorI,String tituloI,String iSBNI)


{
autor=autorI;
titulo=tituloI;
iSBN=iSBNI;
}

@Override
public String toString() {
return(autor+","+titulo+","+iSBN).toUpperCase();
}

public String obtenerAutor(){return autor;}


public String obtenerISBN(){return iSBN;}
public String obtenerTitulo(){return titulo;}
public void asignarAutor(String autorI){autor=autorI;}
public void asignarISBN(String iSBNI){iSBN=iSBNI;}
public void asignarTitulo(String tituloI){titulo=tituloI;}
}

Anda mungkin juga menyukai