Lo que debo de hacer es que al pulsar en una provincia automaticamente en la lista de debajo aparezcan las poblaciones creadas en esa provincia y que si hago doble click en una provincia en el panel de la derecha me aparezcan los datos relacionados con las predicciones, mis clases son estas:
La principal
Código
package principal; import java.awt.*; import java.awt.event.*; import Poblacion.VentanaBorrarPoblacion; import Poblacion.VentanaCrearPoblacion; import Provincia.VentanaBorrarProvincia; import Provincia.VentanaCrearProvincia; 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 */ /** * */ private static final long serialVersionUID = 502635761186556414L; private AlmacenPoblaciones almacen; // private IAlmacenPoblaciones almacenPoblaciones; private InterfazAWT_AEMET gui; /** * Constructor. * * @throws GestorAEMETException */ super(titulo); setSize(ancho, alto); setLocationRelativeTo(null); almacen = RecuperarAlmacenPoblaciones(); initComponents(); listaProvincias.add(provincia); /*if(listaProvincias.getSelectedItem()==null){ listaPoblaciones.add(almacen.getPoblaciones(listaProvincias.getSelectedItem())); } for(IPoblacion s : almacen.getPoblaciones(listaProvincias.getSelectedItem())){ }*/ } //Imprimimos provincias y poblaciones en las listas } public AlmacenPoblaciones RecuperarAlmacenPoblaciones() { // Recuperamos el almacén AlmacenPoblaciones almacenPoblaciones1 = new AlmacenPoblaciones(); if (almacenPoblaciones1.recuperar(FICHERO)) else return almacenPoblaciones1; } private void initComponents() { // Boton salir por defecto guardarAntesDeSalir(); } }); setMenuBar(addMenuBar()); } // Sitúo los menús desplegables // Creo el menú Archivo crearCargar.addActionListener(new Controller()); crearGuardar.addActionListener(new Controller()); salir.addActionListener(new Controller()); menuArchivo.add(crearCargar); menuArchivo.add(crearGuardar); menuArchivo.add(salir); // Creo el menú Provincias crearProvincias.addActionListener(new Controller()); borrarProvincias.addActionListener(new Controller()); menuProvincias.add(crearProvincias); menuProvincias.add(borrarProvincias); // Creo el menu Poblaciones crearPoblacion.addActionListener(new Controller()); borrarPoblacion.addActionListener(new Controller()); ordenarNombre.addActionListener(new Controller()); ordenarHabitantes.addActionListener(new Controller()); modPoblacion.addActionListener(new Controller()); movPoblacion.addActionListener(new Controller()); menuPoblaciones.add(crearPoblacion); menuPoblaciones.add(borrarPoblacion); menuPoblaciones.add(ordenarNombre); menuPoblaciones.add(ordenarHabitantes); menuPoblaciones.add(modPoblacion); menuPoblaciones.add(movPoblacion); // Creo el menú de ayuda 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; } // Sitúo la línea de botones // Boton crear provincia proCrear.addActionListener(new Controller()); // Boton crear poblacion poCrear.addActionListener(new Controller()); // Boton actualizar prediccion aPrediccion.addActionListener(new Controller()); // Añadir los botones a la barra lineaDeBotones.add(proCrear); lineaDeBotones.add(poCrear); lineaDeBotones.add(aPrediccion); return lineaDeBotones; } // Creamos panel para mostrar provincias y poblaciones y lo colocamos a // la izquierda izquierda.add(lProvincia); izquierda.add(listaProvincias); izquierda.add(lPoblacion); izquierda.add(listaPoblaciones); return izquierda; } // Creamos el panel de las predicciones return predicciones; } // Sitúo la línea de estado lineaDeEstado.add(ventanaDeeventos); return lineaDeEstado; } private void guardarAntesDeSalir() { // Guardar almacen almacen.guardar(FICHERO); } EvaluarAccion(nombre); } switch (accion) { case "Guardar": almacen.guardar(FICHERO); Aviso guardar = new Aviso(gui, "Archivo guardado"); break; case "Salir": break; case "Crear provincia": new VentanaCrearProvincia(gui,almacen,listaPoblaciones,listaProvincias,listaPredicciones).setVisible(true); break; case "Borrar provincia": new VentanaBorrarProvincia(gui,almacen,listaPoblaciones,listaProvincias,listaPredicciones).setVisible(true); break; case "Crear poblacion": new VentanaCrearPoblacion(gui,almacen,listaPoblaciones,listaProvincias,listaPredicciones).setVisible(true); break; case "Borrar poblacion": new VentanaBorrarPoblacion(gui,almacen,listaPoblaciones,listaProvincias,listaPredicciones).setVisible(true); break; case "Ordenar por nombre": break; case "Ordenar por habitantes": break; case "Modificar poblacion": break; case "Mover poblacion": break; } } } /** * Clase que implementa la acción del menú "acerca de". */ VentanaAcercaDe ventanaAcercaDe = new VentanaAcercaDe( InterfazAWT_AEMET.this); ventanaAcercaDe.setVisible(true); } }// Acerca de /** * Método main. * @throws GestorAEMETException */ InterfazAWT_AEMET mimarco = new InterfazAWT_AEMET("Gestor AEMET", 1000, 500); mimarco.setVisible(true); } // Main }
La que crea provincia:
Código
y la que crea poblacion
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.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; private AlmacenPoblaciones almacen; private static final long serialVersionUID = -2530069431684593677L; super(gui); this.almacen = almacen; this.listaPoblaciones = listaPoblaciones; this.listaProvincias = listaProvincias; this.listaPredicciones = listaPredicciones; initComponents(gui); } setLocationRelativeTo(gui); this.setTitle("Crear Provincia"); this.setSize(300, 100); panel.add(label); panel.add(textField); panel.add(crear); panel.add(cancelar); crear.addActionListener(new Controller()); cancelar.addActionListener(new Controller()); this.add(panel); VentanaCrearProvincia.this.dispose(); } }); } if(label.equals("Crear")){ try{ almacen.addProvincia(textField.getText()); listaProvincias.removeAll(); listaProvincias.add(provincia); } VentanaCrearProvincia.this.dispose(); Aviso aviso = new Aviso(VentanaCrearProvincia.this,e1.getMessage()); } }else{ VentanaCrearProvincia.this.dispose(); } } } }
Código
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.ItemEvent; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import paa.provincias.IPoblacion; import principal.AlmacenPoblaciones; import principal.Aviso; import principal.Poblacion; private AlmacenPoblaciones almacen; private static final long serialVersionUID = 1434307119439314094L; super(gui); this.almacen = almacen; this.listaPoblaciones = listaPoblaciones; this.listaProvincias = listaProvincias; this.listaPredicciones = listaPredicciones; if(listaProvincias.getSelectedItem() != null){ initComponents(gui); }else{ Aviso aviso = new Aviso(gui,"Selecciona una provincia"); gui.dispose(); } } setLocationRelativeTo(gui); this.setTitle("Crear Poblacion"); this.setSize(300, 200); crear.addActionListener(new Controller()); cancelar.addActionListener(new Controller()); texto.add(nombre); texto.add(nombreP); texto.add(habitantes); texto.add(codigo); panel.add(crear); panel.add(cancelar); VentanaCrearPoblacion.this.dispose(); } }); } private VentanaCrearPoblacion gui; if(label.equals("Crear")){ try{ IPoblacion poblacion = new Poblacion(nombre.getText(), Integer.parseInt(habitantes.getText()), listaProvincias.getSelectedItem(), codigo.getText()); almacen.addPoblacion(listaProvincias.getSelectedItem(),poblacion); //listaPoblaciones2.removeAll(); for(IPoblacion p : almacen.getPoblaciones(listaProvincias.getSelectedItem())){ listaPoblaciones.add(poblacion.getNombre()); } VentanaCrearPoblacion.this.dispose(); Aviso aviso = new Aviso(gui,e1.getMessage()); } }else{ VentanaCrearPoblacion.this.dispose(); } } } }
las demas clases no importan ya que son de practicas anteriores o ya me las dan implementadas, en lo que dudo es a la hora de añadir la poblacion, he pensado que la clase ventanaCrearPoblacion solo debe de añadir la poblacion al almacen y que la clase que se debe de encargar de que al pulsar una provincia se muestrren las poblaciones asociadas debe de ser la principal