Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - kikian94

#11
Java / Re: Meter un Frame dentro de otro Frame
27 Marzo 2015, 18:29 PM
hola, ya he resuelto bastantes errores, puedo añadir y eliminar provincias perfectamente, ahora lo que necesito es que en la lista de provincias al pinchar en una, por ejemplo en madrid y darle al boton crear poblacion,me salga un frame en el que me diga que voy a añadir en la provincia madrid la poblacion xxxx, estoy utilizando el metodo lista.getSelectedItem() para saber que elemtno esta pinchado pero me salta null pointer exception y no se porque, mira:
Código (java) [Seleccionar]
package Poblacion;
import java.awt.BorderLayout;
import java.awt.Button;
import java.awt.Dialog;
import java.awt.FlowLayout;
import java.awt.Frame;
import java.awt.GridLayout;
import java.awt.Label;
import java.awt.List;
import java.awt.Panel;
import java.awt.TextField;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

import principal.AlmacenPoblaciones;
import principal.Aviso;

public class VentanaCrearPoblacion extends Dialog {

private Button crear;
private Button cancelar;
private AlmacenPoblaciones almacen;
private List listaPoblaciones;
private List listaPredicciones;
private List listaProvincias;
private TextField textField;
private static final long serialVersionUID = 1434307119439314094L;

public VentanaCrearPoblacion(Frame gui, AlmacenPoblaciones almacen, List listaPoblaciones, List listaProvincias, List listaPredicciones) {
super(gui);
initComponents(gui);
this.almacen = almacen;
this.listaPoblaciones = listaPoblaciones;
this.listaProvincias = listaProvincias;
this.listaPredicciones = listaPredicciones;
}
public void initComponents(Frame gui){
setLocationRelativeTo(gui);
this.setLayout(new BorderLayout());
this.setTitle("Crear Poblacion");
this.setSize(300, 200);
Panel texto = new Panel(new GridLayout(4,1,0,0));
Panel panel = new Panel(new FlowLayout());
crear = new Button("Crear");
cancelar = new Button("Cancelar");
textField = new TextField("Nombre");
Label nombreP = new Label(listaProvincias.getSelectedItem());
TextField habitantes = new TextField("Habitantes");
TextField codigo = new TextField("CodigoAEMET");
crear.addActionListener(new Controller());
cancelar.addActionListener(new Controller());

texto.add(textField);
texto.add(nombreP);
texto.add(habitantes);
texto.add(codigo);
panel.add(crear);
panel.add(cancelar);

this.add(texto, BorderLayout.CENTER);
this.add(panel,BorderLayout.SOUTH);

addWindowListener (new WindowAdapter (){
          public void windowClosing(WindowEvent e) {
          VentanaCrearPoblacion.this.dispose();
             }
          });
}
class Controller implements ActionListener {
private VentanaCrearPoblacion gui;
public void actionPerformed(ActionEvent e) {
String label = e.getActionCommand();
if(label.equals("Crear")){
System.out.println("hola");
try{

}catch (IllegalArgumentException e1){
Aviso aviso = new Aviso(gui,e1.getMessage());
}
}else{
VentanaCrearPoblacion.this.dispose();
}
}
}

}


he metido el controller dentro de la clase ventana por que me lo ha dicho el profesor
#12
Java / Re: Meter un Frame dentro de otro Frame
22 Marzo 2015, 13:42 PM
Cita de: Gus Garsaky en 21 Marzo 2015, 13:12 PM
Investiga por tu cuenta tambié... Un poco más abajo en otros temas he puesto códigos para leer ficheros. Échales un vistazo y aplícalo a tu aplicación.
tambien investigo por mi cuenta pero no entiendo la forma de hacerlo, el profesor nos dijo que habia que pasar los parametros por referencia para que el almacen de poblaciones se guardara correctamente pero he mirado y en java no se pueden pasar parametros por referencia, todos son por valor.
Tambien sigo sin poder acceder a los botones crear y cancelar de provincias, se crea la ventana pero no hace nada al presionar.
#13
Java / Re: Meter un Frame dentro de otro Frame
21 Marzo 2015, 11:50 AM
sigue sin cerrar la ventana, los botones crear y cancelar no hacen nada, y el de cerrar la ventana hace que se cierre por que puse el window adapter sino tampoco se cerraria:

Código (java) [Seleccionar]
package Provincia;


import java.awt.Window;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;


import javax.swing.SwingUtilities;

import Provincia.VentanaCrearProvincia;

public class VentanaCrearProvinciaController implements ActionListener {
private VentanaCrearProvincia gui;

public VentanaCrearProvinciaController(VentanaCrearProvincia gui){
this.gui = gui;
}

public void actionPerformed(ActionEvent e) {
String label = e.getActionCommand();
if(label.equals("Crear")){
System.out.println("hola");
try{


}catch (IllegalArgumentException e1){
Aviso aviso = new Aviso(gui,e1.getMessage());
}
}else{
Window window = SwingUtilities.getWindowAncestor(gui);
window.dispose();
}
}

}



Código (java) [Seleccionar]
package Provincia;
import java.awt.Button;
import java.awt.Dialog;
import java.awt.Frame;
import java.awt.GridLayout;
import java.awt.Label;
import java.awt.Panel;
import java.awt.TextField;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

public class VentanaCrearProvincia extends Dialog {

private TextField textField;
private Button crear;
private Button cancelar;

private static final long serialVersionUID = -2530069431684593677L;
public VentanaCrearProvincia(Frame gui) {
super(gui);
initComponents(gui);

}

public void initComponents (Frame gui){
Panel panel = new Panel(new GridLayout(2,2,0,0));
Label label = new Label("Provincia:");
textField = new TextField();
crear = new Button("Crear");
cancelar = new Button("Cancelar");
setLocationRelativeTo(gui);
this.setTitle("Crear Provincia");
this.setSize(300, 100);
panel.add(label);
panel.add(textField);
panel.add(crear);
panel.add(cancelar);
this.add(panel);
addWindowListener (new WindowAdapter (){
        public void windowClosing(WindowEvent e) {
        VentanaCrearProvincia.this.dispose();
           }
        });
}
public TextField getTxtProvincia(){
return textField;
}
}


respecto al almacen poblaciones lo he dejado asi:

Código (java) [Seleccionar]
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;
import java.util.Comparator;
import java.util.HashMap;
import java.util.Iterator;

import java.util.Map;
import java.util.Set;
import java.util.SortedSet;
import java.util.TreeSet;


import paa.provincias.IAlmacenPoblaciones;
import paa.provincias.IPoblacion;
import paa.provincias.IPoblacionAEMET;

/**
* Clase que modela un almacen de poblaciones
* @author kikian
*
*/
public class AlmacenPoblaciones implements IAlmacenPoblaciones, Serializable,IPoblacionAEMET {

/**
*
*/
private static final long serialVersionUID = 1L;
private Map<String, SortedSet<IPoblacion>> Aprovincias = new HashMap<String, SortedSet<IPoblacion>>();

/**Ordenación principal en orden alfabético por el campo nombre de la población.
*/
final static int  ORDENARPORNOMBRE = 2;

/**Ordenación principal por el número de habitantes en sentido ascendente, en segundo lugar, en caso de igualdad, por
     * el orden alfabético del campo nombre.
*/
final static int  ORDENARPORHABITANTES = 3;

/**
* Constructor de la clase AlmacenPoblaciones
*/
public AlmacenPoblaciones(){
Aprovincias = new HashMap<String, SortedSet<IPoblacion>>();
}




private static AlmacenPoblaciones instance = null;
static { instance = new AlmacenPoblaciones(); }


public static AlmacenPoblaciones getInstance(){
return instance;
}


/**
*  Añade una población a la provincia correspondiente si la población no existe ya en ella, o sea, no hay ya otra
población con el mismo nombre. Las poblaciones se almacenarán ordenadas según el criterio de ordenación definido.
@param provincia - Provincia en la que se añadira la poblacion
@param poblacion - Poblacion a añadir
*/
public boolean addPoblacion(String provincia, IPoblacion poblacion) {
boolean res = false;
if(provincia == null || poblacion == null || !Aprovincias.containsKey(provincia)){
res = false;
System.out.println("La Provincia no existe, creela antes de añadir poblacion");
}else{
SortedSet<IPoblacion> sPoblacion = Aprovincias.get(provincia);
sPoblacion.add(poblacion);
Aprovincias.put(provincia, sPoblacion);
res = true;
}
return res;
}

/**
*  Añade una nuevo provincia al almacén de poblaciones si no está ya presente en el almacén. Si ya había una del
mismo nombre no se realiza ningún cambio en el almacén y la llamada devuelve false.
@param provincia - La provincia que queremos añadir
*/
public boolean addProvincia(String provincia) {
boolean res = false;
if(Aprovincias.containsKey(provincia)){
System.out.println("Ya existe la provincia");
}else{
Aprovincias.put(provincia, new TreeSet<IPoblacion>());
res = true;
}
return res;
}

/**
*  Indica si ya existe en la provincia una población con ese nombre.
*  @param provincia - Nombre de la provincia en la que vamos a buscar
*  @param poblacion - Nombre de la poblacion que queremos buscar
*/
public boolean containsPoblacion(String provincia, String poblacion) {
boolean res = false;
if(provincia == null || !Aprovincias.containsKey(provincia)){
System.out.println("La provincia no existe, creela antes de eliminar poblacion");
}else{
SortedSet<IPoblacion> sPoblacion = Aprovincias.get(provincia);
for(IPoblacion p:sPoblacion){
if(p.getNombre()==poblacion){
res = true;
}
}
}
return res;
}

/**
* Indica si ya existe en la provincia una población.
* @param provincia - La provincia en la que buscaremos
* @param poblacion - La poblacion que queremos buscar
*/
public boolean containsPoblacion(String provincia, IPoblacion poblacion) {
boolean res = false;
if(provincia == null || !Aprovincias.containsKey(provincia)){
System.out.println("La provincia no existe, creela antes de eliminar poblacion");
}else{
SortedSet<IPoblacion> sPoblacion = Aprovincias.get(provincia);
if(sPoblacion.contains(poblacion)){
res = true;
}
}
return res;
}

/**
*  Indica si ya existe en el almacén la provincia correspondiente.
*  @param provincia - La provincia que queremos comprobar
*/
public boolean containsProvincia(String provincia) {
boolean res = false;
if(Aprovincias.containsKey(provincia)){
res = true;
System.out.println("La provincia esta en el almacen");
}else{
System.out.println("La provincia no esta en el almacen");
}
return res;
}

/**
*  Borra la población situada en la posición correspondiente dentro de la provincia. La posición es un
* entero entre 1 y el número de poblaciones que contiene la provincia. La posición de una
* población es variable, puesto que cambia si se borran poblaciones de la provincia o se reordena.
*  @param provincia - Provincia en la que buscaremos la poblacion
*  @param posicion - posicion de la poblacion que sera borrada
*/
public boolean delPoblacion(String provincia, int posicion) {
if(!Aprovincias.containsKey(provincia)){
System.out.println("No existe la provincia");
return false;
}else{
SortedSet<IPoblacion> sPoblacion = Aprovincias.get(provincia);
Iterator<IPoblacion> ite = sPoblacion.iterator();
int contador = 1;
while(ite.hasNext() && contador < posicion){
ite.next();
contador++;
}
if(ite.hasNext() && contador == posicion){
ite.next();
ite.remove();
Aprovincias.put(provincia, sPoblacion);
return true;
}
}
return false;
}

/**
*  Borra de la provincia la población que se pasa como parámetro.
*  @param provincia - La provincia donde buscaremos
*  @param poblacion - La poblacion que se eliminara
*/
public boolean delPoblacion(String provincia, IPoblacion poblacion) {
boolean res = false;
if(!Aprovincias.containsKey(provincia)){
System.out.print("La provincia no existe");
}else{
SortedSet<IPoblacion> sPoblacion = Aprovincias.get(provincia);
sPoblacion.remove(poblacion);
Aprovincias.put(provincia, sPoblacion);
}
return res;
}

/**
* Borra de la provincia la población cuyo nombre se pasa como parámetro.
* @param provincia - La provincia de donde eliminaremos la poblacion
* @param poblacion - El nombre de la poblacion
*/
public boolean delPoblacion(String provincia, String poblacion) {
if(!Aprovincias.containsKey(provincia)){
System.out.print("La provincia no existe");
return false;
}else{
SortedSet<IPoblacion> sPoblacion = Aprovincias.get(provincia);
for(IPoblacion s : sPoblacion){
if(s.getNombre().equals(poblacion)){
sPoblacion.remove(s);
return true;
}
}
return false;
}
}

/**
* Borra un provincia del almacén de poblaciones si está presente en el almacén. Si no hay una del mismo nombre no
se realiza ningún cambio en el almacén y la llamada devuelve false.
@param provincia - La provincia que queremos eliminar
*/
public boolean delProvincia(String provincia) {
if(Aprovincias.containsKey(provincia)){
Aprovincias.remove(provincia);
return true;
}else{
System.out.println("La provincia no esta en el almacen");
return false;
}
}

/**
* Devuelve el número de poblaciones que contiene la provincia cuyo nombre se indica.
*  @param provincia - La provincia de la que obtendremos el numero de poblaciones
*/
public int getNumPoblaciones(String provincia) {
SortedSet<IPoblacion> spoblacion = Aprovincias.get(provincia);
return spoblacion.size();
}

/**
* Devuelve la población situada en la posición correspondiente dentro de la provincia. La posición es un
* entero entre 1 y el número de poblaciones que contiene la provincia. La posición de una población es variable, puesto
* que cambia si se borran poblaciones de la provincia o se reordenan.
* @param provincia - la provincia en la que se buscara
* @param posicion - la posicion que se eliminara
*/
public IPoblacion getPoblacion(String provincia, int posicion) {
IPoblacion pBuscada = null;
if(!Aprovincias.containsKey(provincia)){
System.out.println("No existe la provincia");
}else{
SortedSet<IPoblacion> sPoblacion = Aprovincias.get(provincia);
Iterator<IPoblacion> ite = sPoblacion.iterator();
int contador = 1;
while(ite.hasNext() && contador < posicion){
ite.next();
contador++;
}
if(ite.hasNext() && contador == posicion){
pBuscada = ite.next();
ite.remove();
}
}
return pBuscada;
}

/**Devuelve de la provincia la población que posee el nombre que se pasa como parámetro.
*
*/
public IPoblacion getPoblacion(String provincia, String poblacion) {
SortedSet<IPoblacion> spoblacion = Aprovincias.get(provincia);
IPoblacion p = null;
for(IPoblacion s : spoblacion){
if(s.getNombre().equals(poblacion)){
p = s;
}
}
return p;
}

/**
* Devuelve todas las poblaciones de la provincia correspondiente ordenadas según el criterio actual.
* @param provincia - La provincia de la que obtendremos el Set con las poblaciones
*/
public SortedSet<IPoblacion> getPoblaciones(String provincia) {
SortedSet<IPoblacion> spoblacion = null;
if(!Aprovincias.containsKey(provincia)){
System.out.println("No existe la provincia");
}else{
spoblacion = Aprovincias.get(provincia);
}
return spoblacion;
}

/**
* Devuelve un conjunto con los nombres de los provincias que existen en el almacén de poblaciones.
*/
public Set<String> getProvincias() {
Set<String> provincias = Aprovincias.keySet();
return provincias;
}

/**Guarda el almacén de poblaciones en el fichero cuyo nombre se pasa como parámetro. Devuelve true si se ha guardado
* correctamente y false si hay algún tipo de error o excepción.
* @param escritura - nombre del fichero
*/
public boolean guardar(String escritura) {
ObjectOutputStream salida =null;
try{
salida = new ObjectOutputStream (new FileOutputStream (escritura));
salida.writeObject(Aprovincias);
}catch(Exception e){
e.printStackTrace();
}
finally{
if(salida!=null)
try{
salida.close();
System.out.println("Guardado");
return true;
}catch (IOException e){
e.printStackTrace();
}
}
return false;
}

/**Permite cambiar el criterio de ordenación de la correspondiente provincia, las poblaciones almacenadas
* serán reordenadas según el nuevo criterio de ordenación que se indica como parámetro utilizando las constantes
* predefinidas: ORDENARPORNOMBRE ú ORDENARPORHABITANTES (ver su descripción en fields).
* @param provincia - Provincia en la que se reordenaran las poblaciones
* @param ordenarPor - Metodo para ordenar las poblaciones
*/
public boolean ordenarPor(String provincia, int ordenarPor) {
if(provincia != null || ordenarPor != ORDENARPORNOMBRE || ordenarPor != ORDENARPORHABITANTES ){
if(ordenarPor == ORDENARPORNOMBRE){
//Metemos en un Set las poblaciones de la provincia asociada
Set<IPoblacion> spoblacion = Aprovincias.get(provincia);
//Creamos un nuevo Set de tipo TreeSet y le aplicamos el criterio de ordenacion
//de la clase porNombre, luego le añadimos todas las poblaciones para que se ordenen
TreeSet<IPoblacion> n1Poblacion = new TreeSet<IPoblacion>(new porNombre());
n1Poblacion.addAll(spoblacion);
Aprovincias.put(provincia, n1Poblacion);
}else if(ordenarPor == ORDENARPORHABITANTES){
//Mismo procedimiento que ORDENARPORNOMBRE pero ahora utilizamos el criterio de ordenacion
//de la clase CompareHabitantes
Set<IPoblacion> spoblacion = Aprovincias.get(provincia);
TreeSet<IPoblacion> n2Poblacion = new TreeSet<IPoblacion>(new CompareHabitantes());
n2Poblacion.addAll(spoblacion);
Aprovincias.put(provincia, n2Poblacion);
}
return true;
}
return false;
}

/**Recupera un almacén de poblaciones del fichero cuyo nombre se pasa como parámetro. Si el fichero no existe o
*  hay algún tipo de excepción devuelve false y crea un almacén vacío. Si lo recupera, devuelve true.
* @param lectura - Nombre del archivo que leeremos
*/
public boolean recuperar(String lectura) {
ObjectInputStream entrada = null;
try{
entrada = new ObjectInputStream (new FileInputStream (lectura));
@SuppressWarnings("unchecked")
Map<String, SortedSet<IPoblacion>> Aprovincias2 = (Map<String, SortedSet<IPoblacion>>) entrada.readObject();
System.out.println(Aprovincias2.entrySet());
}catch(Exception e){
e.printStackTrace();
}
finally{
if(entrada!=null)
try{
entrada.close();
System.out.println("Recuperado");
return true;
}catch (IOException e){
e.printStackTrace();
}
}
return false;
}

/**
* Clase para comparar las poblaciones por nombre
* @author kikian
*
*/
class porNombre implements Comparator<IPoblacion>{
@Override
public int compare(IPoblacion o1, IPoblacion o2) {
return o1.getNombre().compareTo(o2.getNombre());
}

}

/**
* Obtiene el codigo AEMET asociado a la poblacion
*/
public String getCodigoAEMET() {
// TODO Auto-generated method stub
return null;
}

}


y para ver si funcionaba en la clase principal tengo esto:
Código (java) [Seleccionar]
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.util.Date;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.Set;
import java.text.SimpleDateFormat;

import paa.provincias.GestorAEMET;
import paa.provincias.GestorAEMETException;
import paa.provincias.IPoblacion;

/**
* Fichero: InterfazAWT_AEMET.java
* Clase que implementa la Interfaz Gráfica AEMET con awt.
* @author  PAA
* @version 1.0
*/
public class InterfazAWT_AEMET extends Frame  {
/**
*
*/
private static final long serialVersionUID = 502635761186556414L;

private static final String FICHERO = "almacen.dat";
private Controller controller;
private AlmacenPoblaciones almacen;

// private IAlmacenPoblaciones almacenPoblaciones;
// private List listaPoblaciones;
// private List listaPredicciones;

/**
* Constructor.
* @throws GestorAEMETException
*/
public InterfazAWT_AEMET(String titulo, int ancho, int alto) throws GestorAEMETException{
super(titulo);
controller = new Controller(this);
setSize(ancho,alto);
setLocationRelativeTo(null);
setLayout( new BorderLayout() ); // Layout de la aplicación, podría ser otro
initComponents();
almacen = AlmacenPoblaciones.getInstance();
almacen.recuperar(FICHERO);
System.out.println(almacen.getProvincias());
}//Constructor
//List<IPrediccion> lista = null;


/*try {
lista = gestor.getPredicciones( poblacion );
poblacion.lista = lista;
} catch( GestorAEMETException gae ) {
System.out.println( gae.getMessage() );
}*/

public AlmacenPoblaciones RecuperarAlmacenPoblaciones() {
// Recuperamos el almacén
AlmacenPoblaciones almacenPoblaciones1 = new AlmacenPoblaciones();

if (almacenPoblaciones1.recuperar(FICHERO))
System.out.println("Recuperado el almacen del fichero " + FICHERO);
else

System.out.println("No se pudo recuperar el almacen del fichero " + FICHERO);
return almacenPoblaciones1;

}
private void initComponents() throws GestorAEMETException{


//Boton salir por defecto
addWindowListener (new WindowAdapter () {
          public void windowClosing(WindowEvent e) {
          guardarAntesDeSalir ();
              System.exit(0);
             }
    });

setMenuBar(addMenuBar());
this.add (addToolBar(),BorderLayout.NORTH);
this.add (addlineaEstado(), BorderLayout.SOUTH);
this.add (addPanelIzquierda(), BorderLayout.WEST);
this.add (addpredicciones(), BorderLayout.CENTER);
}



private MenuBar addMenuBar(){
//Sitúo los menús desplegables
MenuBar barraDeMenu = new MenuBar();

// Creo el menú Archivo
Menu menuArchivo = new Menu("Archivo");
MenuItem crearGuardar = new MenuItem ("Guardar");
MenuItem crearCargar = new MenuItem ("Cargar");
MenuItem salir = new MenuItem ("Salir");
crearCargar.addActionListener(controller);
crearGuardar.addActionListener(controller);
salir.addActionListener(controller);
menuArchivo.add(crearCargar);
menuArchivo.add(crearGuardar);
menuArchivo.add(salir);

// Creo el menú Provincias
Menu menuProvincias = new Menu("Provincias");
MenuItem crearProvincias = new MenuItem ("Crear provincia");
MenuItem borrarProvincias = new MenuItem ("Borrar provincia");
crearProvincias.addActionListener(controller);
borrarProvincias.addActionListener(controller);
menuProvincias.add(crearProvincias);
menuProvincias.add(borrarProvincias);

// Creo el menu Poblaciones
Menu menuPoblaciones = new Menu("Poblaciones");
MenuItem crearPoblacion = new MenuItem ("Crear poblacion");
MenuItem borrarPoblacion = new MenuItem ("Borrar poblacion");
MenuItem ordenarNombre = new MenuItem ("Ordenar por nombre");
MenuItem ordenarHabitantes = new MenuItem ("Ordenar por habitantes");
MenuItem modPoblacion = new MenuItem ("Modificar poblacion");
MenuItem movPoblacion = new MenuItem ("Mover poblacion");
crearPoblacion.addActionListener(controller);
borrarPoblacion.addActionListener(controller);
ordenarNombre.addActionListener(controller);
ordenarHabitantes.addActionListener(controller);
modPoblacion.addActionListener(controller);
movPoblacion.addActionListener(controller);
menuPoblaciones.add(crearPoblacion);
menuPoblaciones.add(borrarPoblacion);
menuPoblaciones.add(ordenarNombre);
menuPoblaciones.add(ordenarHabitantes);
menuPoblaciones.add(modPoblacion);
menuPoblaciones.add(movPoblacion);

// Creo el menú de ayuda
Menu ayuda = new Menu("Ayuda");
MenuItem acercaDe = new MenuItem("Acerca de");
acercaDe.addActionListener(new AcercaDe());
ayuda.add(acercaDe);

//Crea el
barraDeMenu.add(menuArchivo);
barraDeMenu.add(menuProvincias);
barraDeMenu.add(menuPoblaciones);
// Sitúo el menú de ayuda en su sitio
barraDeMenu.setHelpMenu(ayuda);
return barraDeMenu;
}

private Panel addToolBar(){
//Sitúo la línea de botones
Panel lineaDeBotones = new Panel(new FlowLayout (FlowLayout.LEFT));
lineaDeBotones.setBackground (Color.lightGray);

//Boton crear provincia
Button proCrear = new Button("Crear provincia");
proCrear.addActionListener(controller);

//Boton crear poblacion
Button poCrear = new Button("Crear poblacion");
poCrear.addActionListener(controller);

//Boton actualizar prediccion
Button aPrediccion = new Button("Actualizar Predicción");
aPrediccion.addActionListener(controller);

// Añadir los botones a la barra
lineaDeBotones.add(proCrear);
lineaDeBotones.add(poCrear);
lineaDeBotones.add(aPrediccion);
return lineaDeBotones;
}

private Panel addPanelIzquierda(){
//Creamos  panel para mostrar provincias y poblaciones y lo colocamos a la izquierda
Panel izquierda = new Panel(new GridLayout(4,1));

Label lProvincia = new Label("Provincias:");
List tProvincias = new List();
for(int i =0; i==20;i++){
tProvincias.add("i");
}
/*Iterator<String> i = almacen.getProvincias().iterator();
while(i.hasNext()){
tProvincias.add(i.next().toString());
}*/


Label lPoblacion = new Label("Poblaciones:");
List tPoblaciones = new List();

izquierda.add(lProvincia);
izquierda.add(tProvincias);
izquierda.add(lPoblacion);
izquierda.add(tPoblaciones);
return izquierda;
}

private Panel addpredicciones(){
//Creamos el panel de las predicciones
Panel predicciones = new Panel(new BorderLayout());
Label lPrediccion = new Label("Predicciones de :");
List tPrediccion = new List();
predicciones.add(lPrediccion,BorderLayout.NORTH);
predicciones.add(tPrediccion,BorderLayout.CENTER);
return predicciones;
}

private Panel addlineaEstado(){
//Sitúo la línea de estado
Panel lineaDeEstado = new Panel();
lineaDeEstado.setLayout (new FlowLayout (FlowLayout.LEFT));
lineaDeEstado.setBackground (Color.lightGray);
Label ventanaDeeventos = new Label("Gestor AEMET v1.0 (PAA)");
lineaDeEstado.add (ventanaDeeventos);
return lineaDeEstado;
}

private void guardarAntesDeSalir () {

// Guardar almacen
System.out.println ("Gracias por utilizar nuestro programa");
}


/**
* Clase que implementa la acción del menú "acerca de".
*/
class AcercaDe implements ActionListener{  // Clase interna
public void actionPerformed(ActionEvent e){
VentanaAcercaDe ventanaAcercaDe = new VentanaAcercaDe(InterfazAWT_AEMET.this);
ventanaAcercaDe.setVisible(true);
}
}//Acerca de


//****Acciones menu archivo****
class GuardarArchivo implements ActionListener {
public void actionPerformed(ActionEvent e) {

}
}//Guardar en un fichero

class CargarArchivo implements ActionListener {
public void actionPerformed(ActionEvent e) {

}
}//Cargar desde un archivo

//Ordena por nombre las poblaciones
class OrdenarNombre implements ActionListener {
public void actionPerformed(ActionEvent e) {

}
}

//Ordena por numero de habitantes las poblaciones
class OrdenarHabitantes implements ActionListener {
public void actionPerformed(ActionEvent e) {

}
}

//Modifica los valores de una poblacion
class ModPoblacion implements ActionListener {
public void actionPerformed(ActionEvent e) {

}
}

//Mueve una poblacion de provincia
class MovPoblacion implements ActionListener {
public void actionPerformed(ActionEvent e) {

}
}

//Accion actualizar prediccion
class ActualizarPrediccion implements ActionListener {
public void actionPerformed(ActionEvent e) {

}
}

/**
* Método main.
* @throws GestorAEMETException
*/
public static void main(String[] args) throws GestorAEMETException {

InterfazAWT_AEMET mimarco = new InterfazAWT_AEMET("Gestor AEMET",1000,500);
mimarco.setVisible(true);
} // Main
}


y al ejecutarlo se abre la ventana del programa y en eclipse me aparece esto:

[Madrid=[Getafe,0,Madrid], Galicia=[], Gralicia=[], Graliscia=[], Garlicia=[]]
Recuperado
[]
Gracias por utilizar nuestro programa

por lo que si se recupera el archivo pero luego cuando hago System.out.println(almacen.getProvincias()); para ver si realmente esta ahi metido el almacen me dice que esta vacio, ya que el metodo recuperar solo muestra el que se ha recuperado y no lo mete en ningun sitio, ¿Como meto lo que leo del archivo a la instacia de almacenPoblaciones?
#14
Java / Re: Meter un Frame dentro de otro Frame
21 Marzo 2015, 11:01 AM
pero si es awt no puedo utilizar Swing utilities  por que esta incluido dentro de Swing.

tengo que crear un metodo que actualize las listas de las predicciones cada vez que borre o añada poblacion o provincia no?
#15
Java / Re: Meter un Frame dentro de otro Frame
20 Marzo 2015, 13:00 PM
la clase principal tiene tantos listener por que aun no los he quitado, segun voy creando las clases los voy eliminando para que quede como MWC:
he intentado hacer lo que me has dicho creando otra clase controller para la ventana provincia,me dibuja la ventana pero no me deja cerrarla por lo que el codigo gui.dispose(); no lo ejecuta:


Código (java) [Seleccionar]
package Provincia;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class VentanaCrearProvinciaController implements ActionListener {
private VentanaCrearProvincia gui;

public VentanaCrearProvinciaController(VentanaCrearProvincia gui){
this.gui = gui;
}
public void actionPerformed(ActionEvent e) {
String label = e.getActionCommand();
if(label.equals("Crear")){

}else{
gui.dispose();
}
}

}


ventana crearprovincia
Código (java) [Seleccionar]
package Provincia;
import java.awt.Button;
import java.awt.Dialog;
import java.awt.Frame;
import java.awt.GridLayout;
import java.awt.Label;
import java.awt.Panel;
import java.awt.TextField;

public class VentanaCrearProvincia extends Dialog {

private TextField textField;
private Button crear;
private Button cancelar;

private static final long serialVersionUID = -2530069431684593677L;
public VentanaCrearProvincia(Frame gui) {
super(gui);
initComponents(gui);
}

public void initComponents (Frame gui){
Panel panel = new Panel(new GridLayout(2,2,0,0));
Label label = new Label("Provincia:");
textField = new TextField();
crear = new Button("Crear");
cancelar = new Button("Cancelar");
setLocationRelativeTo(gui);
this.setTitle("Crear Provincia");
this.setSize(300, 100);
panel.add(label);
panel.add(textField);
panel.add(crear);
panel.add(cancelar);
this.add(panel);
}
public TextField getTxtProvincia(){
return textField;
}
}


respecto al almacenpoblaciones, este es mi codigo, que es el correspondiente a la primera practica y funciona perfectamente, como implementa las interfaces iAlmacenpoblaciones e IPoblacionAEMET, no tengo que hacer extends de linkedhashmap ni de set no? por que esas interfaces ya lo tendran implementado, las interfaces nos las han dado en un paquete .jar


Código (java) [Seleccionar]
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;
import java.util.Comparator;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
import java.util.SortedSet;
import java.util.TreeSet;

import paa.provincias.IAlmacenPoblaciones;
import paa.provincias.IPoblacion;
import paa.provincias.IPoblacionAEMET;

/**
* Clase que modela un almacen de poblaciones
* @author kikian
*
*/
public class AlmacenPoblaciones implements IAlmacenPoblaciones, Serializable,IPoblacionAEMET {

/**
*
*/
private static final long serialVersionUID = 1L;
private Map<String, SortedSet<IPoblacion>> Aprovincias = new HashMap<String, SortedSet<IPoblacion>>();

/**Ordenación principal en orden alfabético por el campo nombre de la población.
*/
final static int  ORDENARPORNOMBRE = 2;

/**Ordenación principal por el número de habitantes en sentido ascendente, en segundo lugar, en caso de igualdad, por
     * el orden alfabético del campo nombre.
*/
final static int  ORDENARPORHABITANTES = 3;

/**
* Constructor de la clase AlmacenPoblaciones
*/
public AlmacenPoblaciones(){
Aprovincias = new HashMap<String, SortedSet<IPoblacion>>();
}

/**
*  Añade una población a la provincia correspondiente si la población no existe ya en ella, o sea, no hay ya otra
población con el mismo nombre. Las poblaciones se almacenarán ordenadas según el criterio de ordenación definido.
@param provincia - Provincia en la que se añadira la poblacion
@param poblacion - Poblacion a añadir
*/
public boolean addPoblacion(String provincia, IPoblacion poblacion) {
boolean res = false;
if(provincia == null || poblacion == null || !Aprovincias.containsKey(provincia)){
res = false;
System.out.println("La Provincia no existe, creela antes de añadir poblacion");
}else{
SortedSet<IPoblacion> sPoblacion = Aprovincias.get(provincia);
sPoblacion.add(poblacion);
Aprovincias.put(provincia, sPoblacion);
res = true;
}
return res;
}

/**
*  Añade una nuevo provincia al almacén de poblaciones si no está ya presente en el almacén. Si ya había una del
mismo nombre no se realiza ningún cambio en el almacén y la llamada devuelve false.
@param provincia - La provincia que queremos añadir
*/
public boolean addProvincia(String provincia) {
boolean res = false;
if(Aprovincias.containsKey(provincia)){
System.out.println("Ya existe la provincia");
}else{
Aprovincias.put(provincia, new TreeSet<IPoblacion>());
res = true;
}
return res;
}

/**
*  Indica si ya existe en la provincia una población con ese nombre.
*  @param provincia - Nombre de la provincia en la que vamos a buscar
*  @param poblacion - Nombre de la poblacion que queremos buscar
*/
public boolean containsPoblacion(String provincia, String poblacion) {
boolean res = false;
if(provincia == null || !Aprovincias.containsKey(provincia)){
System.out.println("La provincia no existe, creela antes de eliminar poblacion");
}else{
SortedSet<IPoblacion> sPoblacion = Aprovincias.get(provincia);
for(IPoblacion p:sPoblacion){
if(p.getNombre()==poblacion){
res = true;
}
}
}
return res;
}

/**
* Indica si ya existe en la provincia una población.
* @param provincia - La provincia en la que buscaremos
* @param poblacion - La poblacion que queremos buscar
*/
public boolean containsPoblacion(String provincia, IPoblacion poblacion) {
boolean res = false;
if(provincia == null || !Aprovincias.containsKey(provincia)){
System.out.println("La provincia no existe, creela antes de eliminar poblacion");
}else{
SortedSet<IPoblacion> sPoblacion = Aprovincias.get(provincia);
if(sPoblacion.contains(poblacion)){
res = true;
}
}
return res;
}

/**
*  Indica si ya existe en el almacén la provincia correspondiente.
*  @param provincia - La provincia que queremos comprobar
*/
public boolean containsProvincia(String provincia) {
boolean res = false;
if(Aprovincias.containsKey(provincia)){
res = true;
System.out.println("La provincia esta en el almacen");
}else{
System.out.println("La provincia no esta en el almacen");
}
return res;
}

/**
*  Borra la población situada en la posición correspondiente dentro de la provincia. La posición es un
* entero entre 1 y el número de poblaciones que contiene la provincia. La posición de una
* población es variable, puesto que cambia si se borran poblaciones de la provincia o se reordena.
*  @param provincia - Provincia en la que buscaremos la poblacion
*  @param posicion - posicion de la poblacion que sera borrada
*/
public boolean delPoblacion(String provincia, int posicion) {
if(!Aprovincias.containsKey(provincia)){
System.out.println("No existe la provincia");
return false;
}else{
SortedSet<IPoblacion> sPoblacion = Aprovincias.get(provincia);
Iterator<IPoblacion> ite = sPoblacion.iterator();
int contador = 1;
while(ite.hasNext() && contador < posicion){
ite.next();
contador++;
}
if(ite.hasNext() && contador == posicion){
ite.next();
ite.remove();
Aprovincias.put(provincia, sPoblacion);
return true;
}
}
return false;
}

/**
*  Borra de la provincia la población que se pasa como parámetro.
*  @param provincia - La provincia donde buscaremos
*  @param poblacion - La poblacion que se eliminara
*/
public boolean delPoblacion(String provincia, IPoblacion poblacion) {
boolean res = false;
if(!Aprovincias.containsKey(provincia)){
System.out.print("La provincia no existe");
}else{
SortedSet<IPoblacion> sPoblacion = Aprovincias.get(provincia);
sPoblacion.remove(poblacion);
Aprovincias.put(provincia, sPoblacion);
}
return res;
}

/**
* Borra de la provincia la población cuyo nombre se pasa como parámetro.
* @param provincia - La provincia de donde eliminaremos la poblacion
* @param poblacion - El nombre de la poblacion
*/
public boolean delPoblacion(String provincia, String poblacion) {
if(!Aprovincias.containsKey(provincia)){
System.out.print("La provincia no existe");
return false;
}else{
SortedSet<IPoblacion> sPoblacion = Aprovincias.get(provincia);
for(IPoblacion s : sPoblacion){
if(s.getNombre().equals(poblacion)){
sPoblacion.remove(s);
return true;
}
}
return false;
}
}

/**
* Borra un provincia del almacén de poblaciones si está presente en el almacén. Si no hay una del mismo nombre no
se realiza ningún cambio en el almacén y la llamada devuelve false.
@param provincia - La provincia que queremos eliminar
*/
public boolean delProvincia(String provincia) {
if(Aprovincias.containsKey(provincia)){
Aprovincias.remove(provincia);
return true;
}else{
System.out.println("La provincia no esta en el almacen");
return false;
}
}

/**
* Devuelve el número de poblaciones que contiene la provincia cuyo nombre se indica.
*  @param provincia - La provincia de la que obtendremos el numero de poblaciones
*/
public int getNumPoblaciones(String provincia) {
SortedSet<IPoblacion> spoblacion = Aprovincias.get(provincia);
return spoblacion.size();
}

/**
* Devuelve la población situada en la posición correspondiente dentro de la provincia. La posición es un
* entero entre 1 y el número de poblaciones que contiene la provincia. La posición de una población es variable, puesto
* que cambia si se borran poblaciones de la provincia o se reordenan.
* @param provincia - la provincia en la que se buscara
* @param posicion - la posicion que se eliminara
*/
public IPoblacion getPoblacion(String provincia, int posicion) {
IPoblacion pBuscada = null;
if(!Aprovincias.containsKey(provincia)){
System.out.println("No existe la provincia");
}else{
SortedSet<IPoblacion> sPoblacion = Aprovincias.get(provincia);
Iterator<IPoblacion> ite = sPoblacion.iterator();
int contador = 1;
while(ite.hasNext() && contador < posicion){
ite.next();
contador++;
}
if(ite.hasNext() && contador == posicion){
pBuscada = ite.next();
ite.remove();
}
}
return pBuscada;
}

/**Devuelve de la provincia la población que posee el nombre que se pasa como parámetro.
*
*/
public IPoblacion getPoblacion(String provincia, String poblacion) {
SortedSet<IPoblacion> spoblacion = Aprovincias.get(provincia);
IPoblacion p = null;
for(IPoblacion s : spoblacion){
if(s.getNombre().equals(poblacion)){
p = s;
}
}
return p;
}

/**
* Devuelve todas las poblaciones de la provincia correspondiente ordenadas según el criterio actual.
* @param provincia - La provincia de la que obtendremos el Set con las poblaciones
*/
public SortedSet<IPoblacion> getPoblaciones(String provincia) {
SortedSet<IPoblacion> spoblacion = null;
if(!Aprovincias.containsKey(provincia)){
System.out.println("No existe la provincia");
}else{
spoblacion = Aprovincias.get(provincia);
}
return spoblacion;
}

/**
* Devuelve un conjunto con los nombres de los provincias que existen en el almacén de poblaciones.
*/
public Set<String> getProvincias() {
Set<String> provincias = Aprovincias.keySet();
return provincias;
}

/**Guarda el almacén de poblaciones en el fichero cuyo nombre se pasa como parámetro. Devuelve true si se ha guardado
* correctamente y false si hay algún tipo de error o excepción.
* @param escritura - nombre del fichero
*/
public boolean guardar(String escritura) {
ObjectOutputStream salida =null;
try{
salida = new ObjectOutputStream (new FileOutputStream (escritura));
salida.writeObject(Aprovincias);
}catch(Exception e){
e.printStackTrace();
}
finally{
if(salida!=null)
try{
salida.close();
return true;
}catch (IOException e){
e.printStackTrace();
}
}
return false;
}

/**Permite cambiar el criterio de ordenación de la correspondiente provincia, las poblaciones almacenadas
* serán reordenadas según el nuevo criterio de ordenación que se indica como parámetro utilizando las constantes
* predefinidas: ORDENARPORNOMBRE ú ORDENARPORHABITANTES (ver su descripción en fields).
* @param provincia - Provincia en la que se reordenaran las poblaciones
* @param ordenarPor - Metodo para ordenar las poblaciones
*/
public boolean ordenarPor(String provincia, int ordenarPor) {
if(provincia != null || ordenarPor != ORDENARPORNOMBRE || ordenarPor != ORDENARPORHABITANTES ){
if(ordenarPor == ORDENARPORNOMBRE){
//Metemos en un Set las poblaciones de la provincia asociada
Set<IPoblacion> spoblacion = Aprovincias.get(provincia);
//Creamos un nuevo Set de tipo TreeSet y le aplicamos el criterio de ordenacion
//de la clase porNombre, luego le añadimos todas las poblaciones para que se ordenen
TreeSet<IPoblacion> n1Poblacion = new TreeSet<IPoblacion>(new porNombre());
n1Poblacion.addAll(spoblacion);
Aprovincias.put(provincia, n1Poblacion);
}else if(ordenarPor == ORDENARPORHABITANTES){
//Mismo procedimiento que ORDENARPORNOMBRE pero ahora utilizamos el criterio de ordenacion
//de la clase CompareHabitantes
Set<IPoblacion> spoblacion = Aprovincias.get(provincia);
TreeSet<IPoblacion> n2Poblacion = new TreeSet<IPoblacion>(new CompareHabitantes());
n2Poblacion.addAll(spoblacion);
Aprovincias.put(provincia, n2Poblacion);
}
return true;
}
return false;
}

/**Recupera un almacén de poblaciones del fichero cuyo nombre se pasa como parámetro. Si el fichero no existe o
*  hay algún tipo de excepción devuelve false y crea un almacén vacío. Si lo recupera, devuelve true.
* @param lectura - Nombre del archivo que leeremos
*/
public boolean recuperar(String lectura) {
ObjectInputStream entrada = null;
try{
entrada = new ObjectInputStream (new FileInputStream (lectura));
@SuppressWarnings("unchecked")
Map<String, SortedSet<IPoblacion>> Aprovincias2 = (Map<String, SortedSet<IPoblacion>>) entrada.readObject();
System.out.println(Aprovincias2.entrySet());
}catch(Exception e){
e.printStackTrace();
}
finally{
if(entrada!=null)
try{
entrada.close();
return true;
}catch (IOException e){
e.printStackTrace();
}
}
return false;
}

/**
* Clase para comparar las poblaciones por nombre
* @author kikian
*
*/
class porNombre implements Comparator<IPoblacion>{
@Override
public int compare(IPoblacion o1, IPoblacion o2) {
return o1.getNombre().compareTo(o2.getNombre());
}

}

@Override
public String getCodigoAEMET() {
// TODO Auto-generated method stub
return null;
}






























}
#16
Java / Re: Meter un Frame dentro de otro Frame
19 Marzo 2015, 13:13 PM
lo que me has puesto de skleton es algo que no he utilizado nunca, no se como se hace por lo que la solucion tiene que ser otra ya debemos de utilizar cosas que hemos dado previamente. he pensado en esto:
Código (java) [Seleccionar]
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.util.Date;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.Set;
import java.text.SimpleDateFormat;

import paa.provincias.GestorAEMET;
import paa.provincias.GestorAEMETException;
import paa.provincias.IPoblacion;

/**
* Fichero: InterfazAWT_AEMET.java
* Clase que implementa la Interfaz Gráfica AEMET con awt.
* @author  PAA
* @version 1.0
*/
public class InterfazAWT_AEMET extends Frame  {
/**
*
*/
private static final long serialVersionUID = 502635761186556414L;

private static final String FICHERO = "almacen.dat";
private Controller controller;
private AlmacenPoblaciones almacen;

// private IAlmacenPoblaciones almacenPoblaciones;
// private List listaPoblaciones;
// private List listaPredicciones;

/**
* Constructor.
* @throws GestorAEMETException
*/
public InterfazAWT_AEMET(String titulo, int ancho, int alto) throws GestorAEMETException{
super(titulo);
controller = new Controller(this,true);
setSize(ancho,alto);
setLocationRelativeTo(null);
setLayout( new BorderLayout() ); // Layout de la aplicación, podría ser otro
initComponents();
almacen = RecuperaAlmacenPoblaciones();
}//Constructor
//List<IPrediccion> lista = null;


/*try {
lista = gestor.getPredicciones( poblacion );
poblacion.lista = lista;
} catch( GestorAEMETException gae ) {
System.out.println( gae.getMessage() );
}*/

public AlmacenPoblaciones RecuperaAlmacenPoblaciones() {
// Recuperamos el almacén
AlmacenPoblaciones almacenPoblaciones1 = new AlmacenPoblaciones();

if (almacenPoblaciones1.recuperar(FICHERO))
System.out.println("Recuperado el almacen del fichero " + FICHERO);
else

System.out.println("No se pudo recuperar el almacen del fichero " + FICHERO);
return almacenPoblaciones1;

}
private void initComponents() throws GestorAEMETException{


//Boton salir por defecto
addWindowListener (new WindowAdapter () {
          public void windowClosing(WindowEvent e) {
          guardarAntesDeSalir ();
              System.exit(0);
             }
    });

setMenuBar(addMenuBar());
this.add (addToolBar(),BorderLayout.NORTH);
this.add (addlineaEstado(), BorderLayout.SOUTH);
this.add (addPanelIzquierda(), BorderLayout.WEST);
this.add (addpredicciones(), BorderLayout.CENTER);
}

public static class almacenPoblaciones extends LinkedHashMap<String, Set<IPoblacion>>{

/**
*
*/
private static final long serialVersionUID = 1L;
private static almacenPoblaciones instance = null;
static { instance = new almacenPoblaciones(); }

private almacenPoblaciones(){}

public static almacenPoblaciones getInstance(){
return instance;
}
}

private MenuBar addMenuBar(){
//Sitúo los menús desplegables
MenuBar barraDeMenu = new MenuBar();

// Creo el menú Archivo
Menu menuArchivo = new Menu("Archivo");
MenuItem crearGuardar = new MenuItem ("Guardar");
MenuItem crearCargar = new MenuItem ("Cargar");
MenuItem salir = new MenuItem ("Salir");
crearCargar.addActionListener(controller);
crearGuardar.addActionListener(controller);
salir.addActionListener(controller);
menuArchivo.add(crearCargar);
menuArchivo.add(crearGuardar);
menuArchivo.add(salir);

// Creo el menú Provincias
Menu menuProvincias = new Menu("Provincias");
MenuItem crearProvincias = new MenuItem ("Crear provincia");
MenuItem borrarProvincias = new MenuItem ("Borrar provincia");
crearProvincias.addActionListener(controller);
borrarProvincias.addActionListener(controller);
menuProvincias.add(crearProvincias);
menuProvincias.add(borrarProvincias);

// Creo el menu Poblaciones
Menu menuPoblaciones = new Menu("Poblaciones");
MenuItem crearPoblacion = new MenuItem ("Crear poblacion");
MenuItem borrarPoblacion = new MenuItem ("Borrar poblacion");
MenuItem ordenarNombre = new MenuItem ("Ordenar por nombre");
MenuItem ordenarHabitantes = new MenuItem ("Ordenar por habitantes");
MenuItem modPoblacion = new MenuItem ("Modificar poblacion");
MenuItem movPoblacion = new MenuItem ("Mover poblacion");
crearPoblacion.addActionListener(controller);
borrarPoblacion.addActionListener(controller);
ordenarNombre.addActionListener(controller);
ordenarHabitantes.addActionListener(controller);
modPoblacion.addActionListener(controller);
movPoblacion.addActionListener(controller);
menuPoblaciones.add(crearPoblacion);
menuPoblaciones.add(borrarPoblacion);
menuPoblaciones.add(ordenarNombre);
menuPoblaciones.add(ordenarHabitantes);
menuPoblaciones.add(modPoblacion);
menuPoblaciones.add(movPoblacion);

// Creo el menú de ayuda
Menu ayuda = new Menu("Ayuda");
MenuItem acercaDe = new MenuItem("Acerca de");
acercaDe.addActionListener(new AcercaDe());
ayuda.add(acercaDe);

//Crea el
barraDeMenu.add(menuArchivo);
barraDeMenu.add(menuProvincias);
barraDeMenu.add(menuPoblaciones);
// Sitúo el menú de ayuda en su sitio
barraDeMenu.setHelpMenu(ayuda);
return barraDeMenu;
}

private Panel addToolBar(){
//Sitúo la línea de botones
Panel lineaDeBotones = new Panel(new FlowLayout (FlowLayout.LEFT));
lineaDeBotones.setBackground (Color.lightGray);

//Boton crear provincia
Button proCrear = new Button("Crear provincia");
proCrear.addActionListener(controller);

//Boton crear poblacion
Button poCrear = new Button("Crear poblacion");
poCrear.addActionListener(controller);

//Boton actualizar prediccion
Button aPrediccion = new Button("Actualizar Predicción");
aPrediccion.addActionListener(controller);

// Añadir los botones a la barra
lineaDeBotones.add(proCrear);
lineaDeBotones.add(poCrear);
lineaDeBotones.add(aPrediccion);
return lineaDeBotones;
}

private Panel addPanelIzquierda(){
//Creamos  panel para mostrar provincias y poblaciones y lo colocamos a la izquierda
Panel izquierda = new Panel(new GridLayout(4,1));

Label lProvincia = new Label("Provincias:");
List tProvincias = new List();
Iterator<String> i = almacen.getProvincias().iterator();
while(i.hasNext()){
tProvincias.add(i.next().toString());
}


Label lPoblacion = new Label("Poblaciones:");
List tPoblaciones = new List();

izquierda.add(lProvincia);
izquierda.add(tProvincias);
izquierda.add(lPoblacion);
izquierda.add(tPoblaciones);
return izquierda;
}

private Panel addpredicciones(){
//Creamos el panel de las predicciones
Panel predicciones = new Panel(new BorderLayout());
Label lPrediccion = new Label("Predicciones de :");
List tPrediccion = new List();
predicciones.add(lPrediccion,BorderLayout.NORTH);
predicciones.add(tPrediccion,BorderLayout.CENTER);
return predicciones;
}

private Panel addlineaEstado(){
//Sitúo la línea de estado
Panel lineaDeEstado = new Panel();
lineaDeEstado.setLayout (new FlowLayout (FlowLayout.LEFT));
lineaDeEstado.setBackground (Color.lightGray);
Label ventanaDeeventos = new Label("Gestor AEMET v1.0 (PAA)");
lineaDeEstado.add (ventanaDeeventos);
return lineaDeEstado;
}

private void guardarAntesDeSalir () {

// Guardar almacen
System.out.println ("Gracias por utilizar nuestro programa");
}


/**
* Clase que implementa la acción del menú "acerca de".
*/
class AcercaDe implements ActionListener{  // Clase interna
public void actionPerformed(ActionEvent e){
VentanaAcercaDe ventanaAcercaDe = new VentanaAcercaDe(InterfazAWT_AEMET.this);
ventanaAcercaDe.setVisible(true);
}
}//Acerca de


//****Acciones menu archivo****
class GuardarArchivo implements ActionListener {
public void actionPerformed(ActionEvent e) {

}
}//Guardar en un fichero

class CargarArchivo implements ActionListener {
public void actionPerformed(ActionEvent e) {

}
}//Cargar desde un archivo

class Salir implements ActionListener {
public void actionPerformed(ActionEvent e) {

}
}//Salir de la aplicacion





//Ordena por nombre las poblaciones
class OrdenarNombre implements ActionListener {
public void actionPerformed(ActionEvent e) {

}
}

//Ordena por numero de habitantes las poblaciones
class OrdenarHabitantes implements ActionListener {
public void actionPerformed(ActionEvent e) {

}
}

//Modifica los valores de una poblacion
class ModPoblacion implements ActionListener {
public void actionPerformed(ActionEvent e) {

}
}

//Mueve una poblacion de provincia
class MovPoblacion implements ActionListener {
public void actionPerformed(ActionEvent e) {

}
}







//Accion actualizar prediccion
class ActualizarPrediccion implements ActionListener {
public void actionPerformed(ActionEvent e) {

}
}

/**
* Método main.
* @throws GestorAEMETException
*/
public static void main(String[] args) throws GestorAEMETException {

InterfazAWT_AEMET mimarco = new InterfazAWT_AEMET("Gestor AEMET",1000,500);
mimarco.setVisible(true);
} // Main
}


lo que hago es leer el almacenpoblaciones del archivo, almacenarlo en una variable y posteriormente se me habia ocurrido para mostar en las listas de poblacion y provincia hacer un iterator con los metodos de almacenPoblaciones getPoblaciones y getProvincias, (los cuales devuelven un set cada uno) e ir añadiendo a ambas listas las corresponsientes provincias y poblaciones.

Pero claro si hago todo esto cuando inicio el programa, en el momento que cree una nueva poblacion o provincia he de refrescar las listas por lo que deberia de utilizar un metodo que sea llamado desde los actionlistener de los botones correspondientes no?.


en el programa de arriba me da error aqui:
Código (java) [Seleccionar]
Iterator<String> i = almacen.getProvincias().iterator();

NullPointerException, no se por que me dice que no hay nada si previamente he utilizado la primera practica para añadir 4 provincias.
#17
Java / Re: Meter un Frame dentro de otro Frame
18 Marzo 2015, 18:24 PM
vale, ya he conseguido que me funcione, mira:

clase principal

Código (java) [Seleccionar]
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.util.Date;
import java.text.SimpleDateFormat;

import paa.provincias.GestorAEMET;
import paa.provincias.GestorAEMETException;

/**
* Fichero: InterfazAWT_AEMET.java
* Clase que implementa la Interfaz Gráfica AEMET con awt.
* @author  PAA
* @version 1.0
*/
public class InterfazAWT_AEMET extends Frame {
/**
*
*/
private static final long serialVersionUID = 502635761186556414L;

private static final String FICHERO = "almacen.dat";
private VentanaCrearProvinciaController controllerCrearProvincia;

// private IAlmacenPoblaciones almacenPoblaciones;
// private List listaPoblaciones;
// private List listaPredicciones;

/**
* Constructor.
*/
public InterfazAWT_AEMET(String titulo, int ancho, int alto){
super(titulo);
controllerCrearProvincia = new VentanaCrearProvinciaController(this);
setSize(ancho,alto);
setLocationRelativeTo(null);
setLayout( new BorderLayout() ); // Layout de la aplicación, podría ser otro
initComponents();

}//Constructor
//List<IPrediccion> lista = null;


/*try {
lista = gestor.getPredicciones( poblacion );
poblacion.lista = lista;
} catch( GestorAEMETException gae ) {
System.out.println( gae.getMessage() );
}*/

private void initComponents(){

// Recuperamos el almacén
AlmacenPoblaciones almacenPoblaciones = new AlmacenPoblaciones();
if (almacenPoblaciones.recuperar(FICHERO))
System.out.println("Recuperado el almacen del fichero " + FICHERO);
else
System.out.println("No se pudo recuperar el almacen del fichero " + FICHERO);
//Boton salir por defecto
addWindowListener (new WindowAdapter () {
          public void windowClosing(WindowEvent e) {
          guardarAntesDeSalir ();
              System.exit(0);
             }
    });

setMenuBar(addMenuBar());
this.add (addToolBar(),BorderLayout.NORTH);
this.add (addlineaEstado(), BorderLayout.SOUTH);
this.add (addPanelIzquierda(), BorderLayout.WEST);
this.add (addpredicciones(), BorderLayout.CENTER);
}


private MenuBar addMenuBar(){
//Sitúo los menús desplegables
MenuBar barraDeMenu = new MenuBar();

// Creo el menú Archivo
Menu menuArchivo = new Menu("Archivo");
MenuItem crearGuardar = new MenuItem ("Guardar");
MenuItem crearCargar = new MenuItem ("Cargar");
MenuItem salir = new MenuItem ("Salir");
crearCargar.addActionListener(new CargarArchivo());
crearGuardar.addActionListener(new GuardarArchivo());
salir.addActionListener(new Salir());
menuArchivo.add(crearCargar);
menuArchivo.add(crearGuardar);
menuArchivo.add(salir);

// Creo el menú Provincias
Menu menuProvincias = new Menu("Provincias");
MenuItem crearProvincias = new MenuItem ("Crear provincia");
MenuItem borrarProvincias = new MenuItem ("Borrar provincia");
crearProvincias.addActionListener(controllerCrearProvincia);
borrarProvincias.addActionListener(new BorrarProvincia());
menuProvincias.add(crearProvincias);
menuProvincias.add(borrarProvincias);

// Creo el menu Poblaciones
Menu menuPoblaciones = new Menu("Poblaciones");
MenuItem crearPoblacion = new MenuItem ("Crear poblacion");
MenuItem borrarPoblacion = new MenuItem ("Borrar poblacion");
MenuItem ordenarNombre = new MenuItem ("Ordenar por nombre");
MenuItem ordenarHabitantes = new MenuItem ("Ordenar por habitantes");
MenuItem modPoblacion = new MenuItem ("Modificar poblacion");
MenuItem movPoblacion = new MenuItem ("Mover poblacion");
crearPoblacion.addActionListener(new CrearPoblacion());
borrarPoblacion.addActionListener(new BorrarPoblacion());
ordenarNombre.addActionListener(new OrdenarNombre());
ordenarHabitantes.addActionListener(new OrdenarHabitantes());
modPoblacion.addActionListener(new ModPoblacion());
movPoblacion.addActionListener(new MovPoblacion());
menuPoblaciones.add(crearPoblacion);
menuPoblaciones.add(borrarPoblacion);
menuPoblaciones.add(ordenarNombre);
menuPoblaciones.add(ordenarHabitantes);
menuPoblaciones.add(modPoblacion);
menuPoblaciones.add(movPoblacion);

// Creo el menú de ayuda
Menu ayuda = new Menu("Ayuda");
MenuItem acercaDe = new MenuItem("Acerca de");
acercaDe.addActionListener(new AcercaDe());
ayuda.add(acercaDe);

//Crea el
barraDeMenu.add(menuArchivo);
barraDeMenu.add(menuProvincias);
barraDeMenu.add(menuPoblaciones);
// Sitúo el menú de ayuda en su sitio
barraDeMenu.setHelpMenu(ayuda);
return barraDeMenu;
}

private Panel addToolBar(){
//Sitúo la línea de botones
Panel lineaDeBotones = new Panel(new FlowLayout (FlowLayout.LEFT));
lineaDeBotones.setBackground (Color.lightGray);

//Boton crear provincia
Button proCrear = new Button("Crear provincia");
proCrear.addActionListener(controllerCrearProvincia);

//Boton crear poblacion
Button poCrear = new Button("Crear Población");
poCrear.addActionListener(new CrearPoblacion());

//Boton actualizar prediccion
Button aPrediccion = new Button("Actualizar Predicción");
aPrediccion.addActionListener(new ActualizarPrediccion());

// Añadir los botones a la barra
lineaDeBotones.add(proCrear);
lineaDeBotones.add(poCrear);
lineaDeBotones.add(aPrediccion);
return lineaDeBotones;
}

private Panel addPanelIzquierda(){
//Creamos  panel para mostrar provincias y poblaciones y lo colocamos a la izquierda
Panel izquierda = new Panel(new GridLayout(4,1));

Label lProvincia = new Label("Provincias:");
List tProvincias = new List();

Label lPoblacion = new Label("Poblaciones:");
List tPoblaciones = new List();

izquierda.add(lProvincia);
izquierda.add(tProvincias);
izquierda.add(lPoblacion);
izquierda.add(tPoblaciones);
return izquierda;
}

private Panel addpredicciones(){
//Creamos el panel de las predicciones
Panel predicciones = new Panel(new BorderLayout());
Label lPrediccion = new Label("Predicciones de :");
List tPrediccion = new List();
predicciones.add(lPrediccion,BorderLayout.NORTH);
predicciones.add(tPrediccion,BorderLayout.CENTER);
return predicciones;
}

private Panel addlineaEstado(){
//Sitúo la línea de estado
Panel lineaDeEstado = new Panel();
lineaDeEstado.setLayout (new FlowLayout (FlowLayout.LEFT));
lineaDeEstado.setBackground (Color.lightGray);
Label ventanaDeeventos = new Label("Gestor AEMET v1.0 (PAA)");
lineaDeEstado.add (ventanaDeeventos);
return lineaDeEstado;
}

private void guardarAntesDeSalir () {

// Guardar almacen
System.out.println ("Gracias por utilizar nuestro programa");
}


/**
* Clase que implementa la acción del menú "acerca de".
*/
class AcercaDe implements ActionListener{  // Clase interna
public void actionPerformed(ActionEvent e){
VentanaAcercaDe ventanaAcercaDe = new VentanaAcercaDe(InterfazAWT_AEMET.this);
ventanaAcercaDe.setVisible(true);
}
}//Acerca de


//****Acciones menu archivo****
class GuardarArchivo implements ActionListener {
public void actionPerformed(ActionEvent e) {

}
}//Guardar en un fichero

class CargarArchivo implements ActionListener {
public void actionPerformed(ActionEvent e) {

}
}//Cargar desde un archivo

class Salir implements ActionListener {
public void actionPerformed(ActionEvent e) {

}
}//Salir de la aplicacion


//****Acciones menu provincia****
// Crea una provincia
class CrearProvincia implements ActionListener {
  public void actionPerformed(ActionEvent e) {
e.getActionCommand();

}
}



//Elimina una provincia
class BorrarProvincia implements ActionListener {
public void actionPerformed(ActionEvent e) {
Aviso aviso = new Aviso(InterfazAWT_AEMET.this,"Provincia:");
aviso.setLayout(new GridLayout(2,2,0,0));
aviso.setTitle("Eliminar Provincia");
aviso.setSize(300, 100);
TextField textField = new TextField();
Button eliminar = new Button("Eliminar");
Button cancelar = new Button("Cancelar");
aviso.add(textField);
aviso.add(eliminar);
aviso.add(cancelar);

aviso.setVisible(true);


}
}




//****Acciones menu poblacion****
//Crear una poblacion
class CrearPoblacion implements ActionListener {
public void actionPerformed(ActionEvent e) {
//Aviso aviso = new Aviso(InterfazAWT_AEMET.this,"Nueva provincia");
Aviso dialog = new Aviso(InterfazAWT_AEMET.this);
dialog.setLayout(new BorderLayout());
dialog.setSize(300, 400);
Panel texto = new Panel(new GridLayout(4,1,0,0));
Panel panel = new Panel(new FlowLayout());
Button crear = new Button("Crear");
Button cancelar = new Button("Cancelar");
TextField nombre = new TextField("Nombre");
Label nombreP = new Label("Nombre Provincia");
TextField habitantes = new TextField("Habitantes");
TextField codigo = new TextField("CodigoAEMET");

texto.add(nombre);
texto.add(nombreP);
texto.add(habitantes);
texto.add(codigo);
panel.add(crear);
panel.add(cancelar);

dialog.add(texto, BorderLayout.CENTER);
dialog.add(panel,BorderLayout.SOUTH);
dialog.pack();
dialog.setVisible(true);



}

}

//Eliminar una poblacion
class BorrarPoblacion implements ActionListener {
public void actionPerformed(ActionEvent e) {
Aviso aviso = new Aviso(InterfazAWT_AEMET.this,"Poblacion:");
aviso.setLayout(new GridLayout(2,2,0,0));
aviso.setTitle("Eliminar Poblacion");
aviso.setSize(300, 100);
TextField textField = new TextField();
Button eliminar = new Button("Eliminar");
Button cancelar = new Button("Cancelar");
aviso.add(textField);
aviso.add(eliminar);
aviso.add(cancelar);

aviso.setVisible(true);
}
}

//Ordena por nombre las poblaciones
class OrdenarNombre implements ActionListener {
public void actionPerformed(ActionEvent e) {

}
}

//Ordena por numero de habitantes las poblaciones
class OrdenarHabitantes implements ActionListener {
public void actionPerformed(ActionEvent e) {

}
}

//Modifica los valores de una poblacion
class ModPoblacion implements ActionListener {
public void actionPerformed(ActionEvent e) {

}
}

//Mueve una poblacion de provincia
class MovPoblacion implements ActionListener {
public void actionPerformed(ActionEvent e) {

}
}







//Accion actualizar prediccion
class ActualizarPrediccion implements ActionListener {
public void actionPerformed(ActionEvent e) {

}
}

/**
* Método main.
*/
public static void main(String[] args) {

InterfazAWT_AEMET mimarco = new InterfazAWT_AEMET("Gestor AEMET",1000,500);
mimarco.setVisible(true);
} // Main
}


clase controller

Código (java) [Seleccionar]
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;


public class VentanaCrearProvinciaController implements ActionListener {
private InterfazAWT_AEMET gui;

public VentanaCrearProvinciaController(InterfazAWT_AEMET gui) {
this.gui = gui;

}

@Override
public void actionPerformed(ActionEvent e) {
if(e.getActionCommand().equals("Crear provincia")){
VentanaCrearProvinciaDialog dialog = new VentanaCrearProvinciaDialog(gui);
dialog.setVisible(true);
}

}

}


clase ventana provincia

Código (java) [Seleccionar]
import java.awt.Button;
import java.awt.Dialog;
import java.awt.Frame;
import java.awt.GridLayout;
import java.awt.Label;
import java.awt.TextField;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;


public class VentanaCrearProvinciaDialog extends Dialog {

/**
*
*/

private static final long serialVersionUID = -2530069431684593677L;
public VentanaCrearProvinciaDialog(Frame gui) {

super(gui);
setLocationRelativeTo(gui);

this.setLayout(new GridLayout(2,2,0,0));
this.setTitle("Crear Provincia");
this.setSize(300, 100);
Label label = new Label("Provincia");
TextField textField = new TextField();
Button crear = new Button("Crear");
Button cancelar = new Button("Cancelar");
crear.addActionListener(new BotonCrear());
cancelar.addActionListener(new BotonCancelar());
this.add(label);
this.add(textField);
this.add(crear);
this.add(cancelar);

addWindowListener (new WindowAdapter (){
          public void windowClosing(WindowEvent e) {
          VentanaCrearProvinciaDialog.this.dispose();
             }
          });
}

class BotonCrear implements ActionListener{

public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub

}

}

class BotonCancelar implements ActionListener{
public void actionPerformed(ActionEvent e) {
dispose();
}
}

}


me abre la ventana de crear provincia y el boton cancelar la cierra, ahora tengo que agregar el boton crear, pero tengo una duda, he de pasarle almacenPoblaciones como parametro, pero el que debe de recibir como parametro es el metodo BotonCrear de CrearProvinciaDialog, que a su vez a de recibirlo de crearprovinciaController lo recoge de interfazAemet, por tanto quedaria asi la cosa BotonCrear(se le pasa AlmacenPoblaciones como parametro)--CrearProvinciaDialog--CrearProvinciaController--InterfazAemet, pero no se como hacer todo el recorrido.

Y otra pregunta por que en el codigo de tu clase principal el objeto controller de tipo mainWindowController lo llamas en todos los action listener, ¿por que? incluso en los de poblacion, yo solo lo he puesto en los de provincia. Muchas gracias por ayudarme, me esta siendo de gran ayuda
#18
Java / Re: Meter un Frame dentro de otro Frame
17 Marzo 2015, 10:06 AM
he modificado el codigo para hacerlo por modulos:


interfaz principal
Código (java) [Seleccionar]
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.util.Date;
import java.text.SimpleDateFormat;

import paa.provincias.GestorAEMET;
import paa.provincias.GestorAEMETException;

/**
* Fichero: InterfazAWT_AEMET.java
* Clase que implementa la Interfaz Gráfica AEMET con awt.
* @author  PAA
* @version 1.0
*/
public class InterfazAWT_AEMET extends Frame {
/**
*
*/
private static final long serialVersionUID = 502635761186556414L;

private static final String FICHERO = "almacen.dat";


// private IAlmacenPoblaciones almacenPoblaciones;
// private List listaPoblaciones;
// private List listaPredicciones;

/**
* Constructor.
*/
public InterfazAWT_AEMET(String titulo, int ancho, int alto){
super(titulo);
setSize(ancho,alto);
setLocationRelativeTo(null);
setLayout( new BorderLayout() ); // Layout de la aplicación, podría ser otro
initComponents();

}//Constructor
//List<IPrediccion> lista = null;


/*try {
lista = gestor.getPredicciones( poblacion );
poblacion.lista = lista;
} catch( GestorAEMETException gae ) {
System.out.println( gae.getMessage() );
}*/

private void initComponents(){

// Recuperamos el almacén
AlmacenPoblaciones almacenPoblaciones = new AlmacenPoblaciones();
if (almacenPoblaciones.recuperar(FICHERO))
System.out.println("Recuperado el almacen del fichero " + FICHERO);
else
System.out.println("No se pudo recuperar el almacen del fichero " + FICHERO);
//Boton salir por defecto
addWindowListener (new WindowAdapter () {
          public void windowClosing(WindowEvent e) {
          guardarAntesDeSalir ();
              System.exit(0);
             }
    });

setMenuBar(addMenuBar());
this.add (addToolBar(),BorderLayout.NORTH);
this.add (addlineaEstado(), BorderLayout.SOUTH);
this.add (addPanelIzquierda(), BorderLayout.WEST);
this.add (addpredicciones(), BorderLayout.CENTER);
}


private MenuBar addMenuBar(){
//Sitúo los menús desplegables
MenuBar barraDeMenu = new MenuBar();

// Creo el menú Archivo
Menu menuArchivo = new Menu("Archivo");
MenuItem crearGuardar = new MenuItem ("Guardar");
MenuItem crearCargar = new MenuItem ("Cargar");
MenuItem salir = new MenuItem ("Salir");
crearCargar.addActionListener(new CargarArchivo());
crearGuardar.addActionListener(new GuardarArchivo());
salir.addActionListener(new Salir());
menuArchivo.add(crearCargar);
menuArchivo.add(crearGuardar);
menuArchivo.add(salir);

// Creo el menú Provincias
Menu menuProvincias = new Menu("Provincias");
MenuItem crearProvincias = new MenuItem ("Crear provincia");
MenuItem borrarProvincias = new MenuItem ("Borrar provincia");
crearProvincias.addActionListener(new CrearProvincia());
borrarProvincias.addActionListener(new BorrarProvincia());
menuProvincias.add(crearProvincias);
menuProvincias.add(borrarProvincias);

// Creo el menu Poblaciones
Menu menuPoblaciones = new Menu("Poblaciones");
MenuItem crearPoblacion = new MenuItem ("Crear poblacion");
MenuItem borrarPoblacion = new MenuItem ("Borrar poblacion");
MenuItem ordenarNombre = new MenuItem ("Ordenar por nombre");
MenuItem ordenarHabitantes = new MenuItem ("Ordenar por habitantes");
MenuItem modPoblacion = new MenuItem ("Modificar poblacion");
MenuItem movPoblacion = new MenuItem ("Mover poblacion");
crearPoblacion.addActionListener(new CrearPoblacion());
borrarPoblacion.addActionListener(new BorrarPoblacion());
ordenarNombre.addActionListener(new OrdenarNombre());
ordenarHabitantes.addActionListener(new OrdenarHabitantes());
modPoblacion.addActionListener(new ModPoblacion());
movPoblacion.addActionListener(new MovPoblacion());
menuPoblaciones.add(crearPoblacion);
menuPoblaciones.add(borrarPoblacion);
menuPoblaciones.add(ordenarNombre);
menuPoblaciones.add(ordenarHabitantes);
menuPoblaciones.add(modPoblacion);
menuPoblaciones.add(movPoblacion);

// Creo el menú de ayuda
Menu ayuda = new Menu("Ayuda");
MenuItem acercaDe = new MenuItem("Acerca de");
acercaDe.addActionListener(new AcercaDe());
ayuda.add(acercaDe);

//Crea el
barraDeMenu.add(menuArchivo);
barraDeMenu.add(menuProvincias);
barraDeMenu.add(menuPoblaciones);
// Sitúo el menú de ayuda en su sitio
barraDeMenu.setHelpMenu(ayuda);
return barraDeMenu;
}

private Panel addToolBar(){
//Sitúo la línea de botones
Panel lineaDeBotones = new Panel(new FlowLayout (FlowLayout.LEFT));
lineaDeBotones.setBackground (Color.lightGray);

//Boton crear provincia
Button proCrear = new Button("Crear provincia");
proCrear.addActionListener(new CrearProvincia());

//Boton crear poblacion
Button poCrear = new Button("Crear Población");
poCrear.addActionListener(new CrearPoblacion());

//Boton actualizar prediccion
Button aPrediccion = new Button("Actualizar Predicción");
aPrediccion.addActionListener(new ActualizarPrediccion());

// Añadir los botones a la barra
lineaDeBotones.add(proCrear);
lineaDeBotones.add(poCrear);
lineaDeBotones.add(aPrediccion);
return lineaDeBotones;
}

private Panel addPanelIzquierda(){
//Creamos  panel para mostrar provincias y poblaciones y lo colocamos a la izquierda
Panel izquierda = new Panel(new GridLayout(4,1));

Label lProvincia = new Label("Provincias:");
List tProvincias = new List();

Label lPoblacion = new Label("Poblaciones:");
List tPoblaciones = new List();

izquierda.add(lProvincia);
izquierda.add(tProvincias);
izquierda.add(lPoblacion);
izquierda.add(tPoblaciones);
return izquierda;
}

private Panel addpredicciones(){
//Creamos el panel de las predicciones
Panel predicciones = new Panel(new BorderLayout());
Label lPrediccion = new Label("Predicciones de :");
List tPrediccion = new List();
predicciones.add(lPrediccion,BorderLayout.NORTH);
predicciones.add(tPrediccion,BorderLayout.CENTER);
return predicciones;
}

private Panel addlineaEstado(){
//Sitúo la línea de estado
Panel lineaDeEstado = new Panel();
lineaDeEstado.setLayout (new FlowLayout (FlowLayout.LEFT));
lineaDeEstado.setBackground (Color.lightGray);
Label ventanaDeeventos = new Label("Gestor AEMET v1.0 (PAA)");
lineaDeEstado.add (ventanaDeeventos);
return lineaDeEstado;
}

private void guardarAntesDeSalir () {

// Guardar almacen
System.out.println ("Gracias por utilizar nuestro programa");
}


/**
* Clase que implementa la acción del menú "acerca de".
*/
class AcercaDe implements ActionListener{  // Clase interna
public void actionPerformed(ActionEvent e){
VentanaAcercaDe ventanaAcercaDe = new VentanaAcercaDe(InterfazAWT_AEMET.this);
ventanaAcercaDe.setVisible(true);
}
}//Acerca de


//****Acciones menu archivo****
class GuardarArchivo implements ActionListener {
public void actionPerformed(ActionEvent e) {

}
}//Guardar en un fichero

class CargarArchivo implements ActionListener {
public void actionPerformed(ActionEvent e) {

}
}//Cargar desde un archivo

class Salir implements ActionListener {
public void actionPerformed(ActionEvent e) {

}
}//Salir de la aplicacion


//****Acciones menu provincia****
// Crea una provincia
class CrearProvincia implements ActionListener {
  public void actionPerformed(ActionEvent e) {
e.getActionCommand();

}
}

class VentanaCrearProvincia implements ActionListener {
public void actionPerformed(ActionEvent e) {
VentanaCrearProvincia dialog = new VentanaCrearProvincia();
dialog.setVisible(true);
}

}

//Elimina una provincia
class BorrarProvincia implements ActionListener {
public void actionPerformed(ActionEvent e) {
Aviso aviso = new Aviso(InterfazAWT_AEMET.this,"Provincia:");
aviso.setLayout(new GridLayout(2,2,0,0));
aviso.setTitle("Eliminar Provincia");
aviso.setSize(300, 100);
TextField textField = new TextField();
Button eliminar = new Button("Eliminar");
Button cancelar = new Button("Cancelar");
aviso.add(textField);
aviso.add(eliminar);
aviso.add(cancelar);

aviso.setVisible(true);


}
}




//****Acciones menu poblacion****
//Crear una poblacion
class CrearPoblacion implements ActionListener {
public void actionPerformed(ActionEvent e) {
//Aviso aviso = new Aviso(InterfazAWT_AEMET.this,"Nueva provincia");
Aviso dialog = new Aviso(InterfazAWT_AEMET.this);
dialog.setLayout(new BorderLayout());
dialog.setSize(300, 400);
Panel texto = new Panel(new GridLayout(4,1,0,0));
Panel panel = new Panel(new FlowLayout());
Button crear = new Button("Crear");
Button cancelar = new Button("Cancelar");
TextField nombre = new TextField("Nombre");
Label nombreP = new Label("Nombre Provincia");
TextField habitantes = new TextField("Habitantes");
TextField codigo = new TextField("CodigoAEMET");

texto.add(nombre);
texto.add(nombreP);
texto.add(habitantes);
texto.add(codigo);
panel.add(crear);
panel.add(cancelar);

dialog.add(texto, BorderLayout.CENTER);
dialog.add(panel,BorderLayout.SOUTH);
dialog.pack();
dialog.setVisible(true);



}

}

//Eliminar una poblacion
class BorrarPoblacion implements ActionListener {
public void actionPerformed(ActionEvent e) {
Aviso aviso = new Aviso(InterfazAWT_AEMET.this,"Poblacion:");
aviso.setLayout(new GridLayout(2,2,0,0));
aviso.setTitle("Eliminar Poblacion");
aviso.setSize(300, 100);
TextField textField = new TextField();
Button eliminar = new Button("Eliminar");
Button cancelar = new Button("Cancelar");
aviso.add(textField);
aviso.add(eliminar);
aviso.add(cancelar);

aviso.setVisible(true);
}
}

//Ordena por nombre las poblaciones
class OrdenarNombre implements ActionListener {
public void actionPerformed(ActionEvent e) {

}
}

//Ordena por numero de habitantes las poblaciones
class OrdenarHabitantes implements ActionListener {
public void actionPerformed(ActionEvent e) {

}
}

//Modifica los valores de una poblacion
class ModPoblacion implements ActionListener {
public void actionPerformed(ActionEvent e) {

}
}

//Mueve una poblacion de provincia
class MovPoblacion implements ActionListener {
public void actionPerformed(ActionEvent e) {

}
}







//Accion actualizar prediccion
class ActualizarPrediccion implements ActionListener {
public void actionPerformed(ActionEvent e) {

}
}

/**
* Método main.
*/
public static void main(String[] args) {

InterfazAWT_AEMET mimarco = new InterfazAWT_AEMET("Gestor AEMET",1000,500);
mimarco.setVisible(true);
} // Main
}



ventana crear provincia
Código (java) [Seleccionar]
import java.awt.Button;
import java.awt.Dialog;
import java.awt.Frame;
import java.awt.GridLayout;
import java.awt.TextField;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;


public class VentanaCrearProvincia extends Dialog {

/**
*
*/
private static final long serialVersionUID = -2530069431684593677L;
public VentanaCrearProvincia(Frame f) {
super(f,"Nueva provincia",true);
setLocationRelativeTo(f);

this.setLayout(new GridLayout(2,2,0,0));
this.setTitle("Crear Provincia");
this.setSize(300, 100);
TextField textField = new TextField();
Button crear = new Button("Crear");
Button cancelar = new Button("Cancelar");
crear.addActionListener(new BotonCrear());
cancelar.addActionListener(new BotonCancelar());
this.add(textField);
this.add(crear);
this.add(cancelar);

addWindowListener (new WindowAdapter (){
          public void windowClosing(WindowEvent e) {
          VentanaCrearProvincia.this.dispose();
             }
          });
}

class BotonCrear implements ActionListener{

@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub

}

}

class BotonCancelar implements ActionListener{

@Override
public void actionPerformed(ActionEvent e) {
System.exit(0);

}

}

}


pero tengo varios errores en el metodo initcomponents:

Código (java) [Seleccionar]
java.io.FileNotFoundException: almacen.dat (El sistema no puede encontrar el archivo especificado)
at java.io.FileInputStream.open(Native Method)
at java.io.FileInputStream.<init>(Unknown Source)
at java.io.FileInputStream.<init>(Unknown Source)
at AlmacenPoblaciones.recuperar(AlmacenPoblaciones.java:357)
at InterfazAWT_AEMET.initComponents(InterfazAWT_AEMET.java:54)
at InterfazAWT_AEMET.<init>(InterfazAWT_AEMET.java:37)
at InterfazAWT_AEMET.main(InterfazAWT_AEMET.java:373)


lo de que no encuentra el archivo, es por que no lo tengo creado, ese no me preocupa de momento, se abre la ventana principal pero al pulsar en crear provincia no sale la siguiente ventana
#19
Java / Re: Meter un Frame dentro de otro Frame
16 Marzo 2015, 19:17 PM
tienes que crear una clase nueva para cada evento o los puedes poner como clases propias?
#20
Java / Re: Meter un Frame dentro de otro Frame
16 Marzo 2015, 18:15 PM
una cosa, yo en mi constructor creo todo el frame con todos los botones, por que tu solo pones esto:
Código (java) [Seleccionar]
public MainWindow() {
super();
controller = new MainWindowController(this);
initComponents();
}