elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Guía rápida para descarga de herramientas gratuitas de seguridad y desinfección


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java
| | | |-+  Meter un Frame dentro de otro Frame
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: 1 2 3 [4] Ir Abajo Respuesta Imprimir
Autor Tema: Meter un Frame dentro de otro Frame  (Leído 13,936 veces)
Usuario Invitado


Desconectado Desconectado

Mensajes: 625



Ver Perfil
Re: Meter un Frame dentro de otro Frame
« Respuesta #30 en: 27 Marzo 2015, 19:00 pm »

Necesitas hacer algunos cambios. Por ejemplo:

Código
  1. @Override
  2. public void actionPeformed(ActionEvent evt) {
  3.    String target = evt.getActionCommand();
  4.    switch(target.toLowerCase()) {
  5.        case "crear población": createPopulation(evt); break;
  6.        case "añadir provincia": createProvince(evt); break;
  7.    }
  8. }
  9.  
  10. private void createPopulation(ActionEvent evt) {
  11.    // listProvinces viene a ser el JList que contiene las provincias
  12.    Province province = (Province) listProvinces.getSelectedItem();
  13.    NewPopulationDialog dialog = new NewPopulationDialog();
  14.    // obtiene el controlador de la vista NewPopulationDialog
  15.    NewPopulationDialogCtrl controller = dialog.getController();
  16.    // le pasa al controlador la provincia a la cual se le
  17.    // agregará la población
  18.    controller.setProvinceTargered(province);
  19.    dialog.setVisible(true);
  20. }

Y en el controlador de NewPopulationDialog:

Código
  1. public class NewPopulationDialogCtrl {
  2.    private NewPopulationDialog gui;
  3.    private String province;
  4.  
  5.    public NewPopulationDialogCtrl(NewPopulationDialog gui) {
  6.        this.gui = gui;
  7.    }
  8.  
  9.    public String getProvinceTarget() {
  10.        return province;
  11.    }
  12.  
  13.    public setProvinceTarget(String province) {
  14.        this.province = province;
  15.    }
  16.  
  17.    /* En la vista obtenemos los datos de la nueva población
  18.         y los asignamos a un objeto Population que se le pasa
  19.         por parámetro a addPopulation para que lo guarde en el Map */
  20.    public void addPopulation(Population) {
  21.  
  22.    }
  23.  
  24.    // otros métodos...
  25.  
  26. }

La vista NewPopulationDialog, debe asignar el nombre de la provincia en el label así:

Código
  1. label.setText(controller.getProvinceTarget());


Saludos.


En línea

"La vida es muy peligrosa. No por las personas que hacen el mal, si no por las que se sientan a ver lo que pasa." Albert Einstein
kikian94

Desconectado Desconectado

Mensajes: 66


Ver Perfil
Re: Meter un Frame dentro de otro Frame
« Respuesta #31 en: 27 Marzo 2015, 19:24 pm »


eso es lo que debe de salir, me sale todo menos donde estan los guiones que tiene que ir la provincia seleccionada

esta es la clase principal:

Código
  1. package principal;
  2. import java.awt.*;
  3. import java.awt.event.*;
  4. import Poblacion.VentanaBorrarPoblacion;
  5. import Poblacion.VentanaCrearPoblacion;
  6. import Provincia.VentanaBorrarProvincia;
  7. import Provincia.VentanaCrearProvincia;
  8. import paa.provincias.GestorAEMET;
  9. import paa.provincias.GestorAEMETException;
  10. import paa.provincias.IPoblacion;
  11.  
  12. /**
  13.  * Fichero: InterfazAWT_AEMET.java Clase que implementa la Interfaz Gráfica
  14.  * AEMET con awt.
  15.  *
  16.  * @author PAA
  17.  * @version 1.0
  18.  */
  19. public class InterfazAWT_AEMET extends Frame {
  20. /**
  21. *
  22. */
  23. private static final long serialVersionUID = 502635761186556414L;
  24.  
  25. private static final String FICHERO = "almacen.dat";
  26. private AlmacenPoblaciones almacen;
  27.  
  28. // private IAlmacenPoblaciones almacenPoblaciones;
  29. private List listaPoblaciones = new List();
  30. private List listaPredicciones = new List();
  31. private List listaProvincias = new List();
  32. private InterfazAWT_AEMET gui;
  33. /**
  34. * Constructor.
  35. *
  36. * @throws GestorAEMETException
  37. */
  38. public InterfazAWT_AEMET(String titulo, int ancho, int alto) {
  39. super(titulo);
  40.  
  41. setSize(ancho, alto);
  42. setLocationRelativeTo(null);
  43. setLayout(new BorderLayout()); // Layout de la aplicación, podría ser otro
  44. almacen = RecuperarAlmacenPoblaciones();
  45. System.out.println(almacen.getProvincias());
  46. initComponents();
  47. for(String provincia : almacen.getProvincias()){
  48. listaProvincias.add(provincia);
  49. }
  50. //Imprimimos provincias y poblaciones en las listas
  51. }
  52.  
  53. public AlmacenPoblaciones RecuperarAlmacenPoblaciones() {
  54. // Recuperamos el almacén
  55. AlmacenPoblaciones almacenPoblaciones1 = new AlmacenPoblaciones();
  56.  
  57. if (almacenPoblaciones1.recuperar(FICHERO))
  58. System.out.println("Recuperado el almacen del fichero " + FICHERO);
  59. else
  60. System.out.println("No se pudo recuperar el almacen del fichero "+ FICHERO);
  61. return almacenPoblaciones1;
  62.  
  63. }
  64.  
  65. private void initComponents() {
  66.  
  67. // Boton salir por defecto
  68. addWindowListener(new WindowAdapter() {
  69. public void windowClosing(WindowEvent e) {
  70. guardarAntesDeSalir();
  71. System.exit(0);
  72. }
  73. });
  74.  
  75. setMenuBar(addMenuBar());
  76. this.add(addToolBar(), BorderLayout.NORTH);
  77. this.add(addlineaEstado(), BorderLayout.SOUTH);
  78. this.add(addPanelIzquierda(), BorderLayout.WEST);
  79. this.add(addpredicciones(), BorderLayout.CENTER);
  80. }
  81.  
  82. private MenuBar addMenuBar() {
  83. // Sitúo los menús desplegables
  84. MenuBar barraDeMenu = new MenuBar();
  85.  
  86. // Creo el menú Archivo
  87. Menu menuArchivo = new Menu("Archivo");
  88. MenuItem crearGuardar = new MenuItem("Guardar");
  89. MenuItem crearCargar = new MenuItem("Cargar");
  90. MenuItem salir = new MenuItem("Salir");
  91. crearCargar.addActionListener(new Controller());
  92. crearGuardar.addActionListener(new Controller());
  93. salir.addActionListener(new Controller());
  94. menuArchivo.add(crearCargar);
  95. menuArchivo.add(crearGuardar);
  96. menuArchivo.add(salir);
  97.  
  98. // Creo el menú Provincias
  99. Menu menuProvincias = new Menu("Provincias");
  100. MenuItem crearProvincias = new MenuItem("Crear provincia");
  101. MenuItem borrarProvincias = new MenuItem("Borrar provincia");
  102. crearProvincias.addActionListener(new Controller());
  103. borrarProvincias.addActionListener(new Controller());
  104. menuProvincias.add(crearProvincias);
  105. menuProvincias.add(borrarProvincias);
  106.  
  107. // Creo el menu Poblaciones
  108. Menu menuPoblaciones = new Menu("Poblaciones");
  109. MenuItem crearPoblacion = new MenuItem("Crear poblacion");
  110. MenuItem borrarPoblacion = new MenuItem("Borrar poblacion");
  111. MenuItem ordenarNombre = new MenuItem("Ordenar por nombre");
  112. MenuItem ordenarHabitantes = new MenuItem("Ordenar por habitantes");
  113. MenuItem modPoblacion = new MenuItem("Modificar poblacion");
  114. MenuItem movPoblacion = new MenuItem("Mover poblacion");
  115. crearPoblacion.addActionListener(new Controller());
  116. borrarPoblacion.addActionListener(new Controller());
  117. ordenarNombre.addActionListener(new Controller());
  118. ordenarHabitantes.addActionListener(new Controller());
  119. modPoblacion.addActionListener(new Controller());
  120. movPoblacion.addActionListener(new Controller());
  121. menuPoblaciones.add(crearPoblacion);
  122. menuPoblaciones.add(borrarPoblacion);
  123. menuPoblaciones.add(ordenarNombre);
  124. menuPoblaciones.add(ordenarHabitantes);
  125. menuPoblaciones.add(modPoblacion);
  126. menuPoblaciones.add(movPoblacion);
  127.  
  128. // Creo el menú de ayuda
  129. Menu ayuda = new Menu("Ayuda");
  130. MenuItem acercaDe = new MenuItem("Acerca de");
  131. acercaDe.addActionListener(new AcercaDe());
  132. ayuda.add(acercaDe);
  133.  
  134. // Crea el
  135. barraDeMenu.add(menuArchivo);
  136. barraDeMenu.add(menuProvincias);
  137. barraDeMenu.add(menuPoblaciones);
  138. // Sitúo el menú de ayuda en su sitio
  139. barraDeMenu.setHelpMenu(ayuda);
  140. return barraDeMenu;
  141. }
  142.  
  143. private Panel addToolBar() {
  144. // Sitúo la línea de botones
  145. Panel lineaDeBotones = new Panel(new FlowLayout(FlowLayout.LEFT));
  146. lineaDeBotones.setBackground(Color.lightGray);
  147.  
  148. // Boton crear provincia
  149. Button proCrear = new Button("Crear provincia");
  150. proCrear.addActionListener(new Controller());
  151.  
  152. // Boton crear poblacion
  153. Button poCrear = new Button("Crear poblacion");
  154. poCrear.addActionListener(new Controller());
  155.  
  156. // Boton actualizar prediccion
  157. Button aPrediccion = new Button("Actualizar Predicción");
  158. aPrediccion.addActionListener(new Controller());
  159.  
  160. // Añadir los botones a la barra
  161. lineaDeBotones.add(proCrear);
  162. lineaDeBotones.add(poCrear);
  163. lineaDeBotones.add(aPrediccion);
  164. return lineaDeBotones;
  165. }
  166.  
  167. private Panel addPanelIzquierda() {
  168. // Creamos panel para mostrar provincias y poblaciones y lo colocamos a
  169. // la izquierda
  170. Panel izquierda = new Panel(new GridLayout(4, 1));
  171. Label lProvincia = new Label("Provincias:");
  172. Label lPoblacion = new Label("Poblaciones:");
  173. izquierda.add(lProvincia);
  174. izquierda.add(listaProvincias);
  175. izquierda.add(lPoblacion);
  176. izquierda.add(listaPoblaciones);
  177. return izquierda;
  178. }
  179.  
  180. private Panel addpredicciones() {
  181. // Creamos el panel de las predicciones
  182. Panel predicciones = new Panel(new BorderLayout());
  183. Label lPrediccion = new Label("Predicciones de :");
  184. List tPrediccion = new List();
  185. predicciones.add(lPrediccion, BorderLayout.NORTH);
  186. predicciones.add(tPrediccion, BorderLayout.CENTER);
  187. return predicciones;
  188. }
  189.  
  190. private Panel addlineaEstado() {
  191. // Sitúo la línea de estado
  192. Panel lineaDeEstado = new Panel();
  193. lineaDeEstado.setLayout(new FlowLayout(FlowLayout.LEFT));
  194. lineaDeEstado.setBackground(Color.lightGray);
  195. Label ventanaDeeventos = new Label("Gestor AEMET v1.0 (PAA)");
  196. lineaDeEstado.add(ventanaDeeventos);
  197. return lineaDeEstado;
  198. }
  199.  
  200. private void guardarAntesDeSalir() {
  201.  
  202. // Guardar almacen
  203. almacen.guardar(FICHERO);
  204. System.out.println("Gracias por utilizar nuestro programa");
  205. }
  206.  
  207. class Controller implements ActionListener {
  208.  
  209. public void actionPerformed(ActionEvent e) {
  210. String nombre = e.getActionCommand();
  211. EvaluarAccion(nombre);
  212. }
  213.  
  214. public void EvaluarAccion(String accion) {
  215.  
  216. switch (accion) {
  217. case "Guardar":
  218. almacen.guardar(FICHERO);
  219. Aviso guardar = new Aviso(gui, "Archivo guardado");
  220. break;
  221. case "Salir":
  222. System.exit(0);
  223. break;
  224. case "Crear provincia":
  225. new VentanaCrearProvincia(gui,almacen,listaPoblaciones,listaProvincias,listaPredicciones).setVisible(true);
  226. break;
  227. case "Borrar provincia":
  228. new VentanaBorrarProvincia(gui,almacen,listaPoblaciones,listaProvincias,listaPredicciones).setVisible(true);
  229. break;
  230. case "Crear poblacion":
  231. new VentanaCrearPoblacion(gui,almacen,listaPoblaciones,listaProvincias,listaPredicciones).setVisible(true);
  232. break;
  233. case "Borrar poblacion":
  234. new VentanaBorrarPoblacion(gui,almacen,listaPoblaciones,listaProvincias,listaPredicciones).setVisible(true);
  235. break;
  236. case "Ordenar por nombre":
  237. break;
  238. case "Ordenar por habitantes":
  239. break;
  240. case "Modificar poblacion":
  241. break;
  242. case "Mover poblacion":
  243. break;
  244. }
  245. }
  246. }
  247.  
  248. /**
  249. * Clase que implementa la acción del menú "acerca de".
  250. */
  251. class AcercaDe implements ActionListener { // Clase interna
  252. public void actionPerformed(ActionEvent e) {
  253. VentanaAcercaDe ventanaAcercaDe = new VentanaAcercaDe(
  254. InterfazAWT_AEMET.this);
  255. ventanaAcercaDe.setVisible(true);
  256. }
  257. }// Acerca de
  258.  
  259. /**
  260. * Método main.
  261. * @throws GestorAEMETException
  262. */
  263. public static void main(String[] args) throws GestorAEMETException {
  264.  
  265. InterfazAWT_AEMET mimarco = new InterfazAWT_AEMET("Gestor AEMET", 1000,
  266. 500);
  267. mimarco.setVisible(true);
  268. } // Main
  269. }
  270.  

y esta la que se encarga de crear poblacion:

Código
  1. package Poblacion;
  2. import java.awt.BorderLayout;
  3. import java.awt.Button;
  4. import java.awt.Dialog;
  5. import java.awt.FlowLayout;
  6. import java.awt.Frame;
  7. import java.awt.GridLayout;
  8. import java.awt.Label;
  9. import java.awt.List;
  10. import java.awt.Panel;
  11. import java.awt.TextField;
  12. import java.awt.event.ActionEvent;
  13. import java.awt.event.ActionListener;
  14. import java.awt.event.ItemEvent;
  15. import java.awt.event.WindowAdapter;
  16. import java.awt.event.WindowEvent;
  17.  
  18. import principal.AlmacenPoblaciones;
  19. import principal.Aviso;
  20.  
  21. public class VentanaCrearPoblacion extends Dialog {
  22.  
  23. private Button crear;
  24. private Button cancelar;
  25. private AlmacenPoblaciones almacen;
  26. private List listaPoblaciones;
  27. private List listaPredicciones;
  28. private List listaProvincias;
  29. private TextField textField;
  30. private static final long serialVersionUID = 1434307119439314094L;
  31.  
  32. public VentanaCrearPoblacion(Frame gui, AlmacenPoblaciones almacen, List listaPoblaciones, List listaProvincias, List listaPredicciones) {
  33. super(gui);
  34. initComponents(gui);
  35. this.almacen = almacen;
  36. this.listaPoblaciones = listaPoblaciones;
  37. this.listaProvincias = listaProvincias;
  38. this.listaPredicciones = listaPredicciones;
  39. }
  40. public void initComponents(Frame gui){
  41. setLocationRelativeTo(gui);
  42. this.setLayout(new BorderLayout());
  43. this.setTitle("Crear Poblacion");
  44. this.setSize(300, 200);
  45. Panel texto = new Panel(new GridLayout(4,1,0,0));
  46. Panel panel = new Panel(new FlowLayout());
  47. crear = new Button("Crear");
  48. cancelar = new Button("Cancelar");
  49. textField = new TextField("Nombre");
  50. Label nombreP = new Label();
  51. String textoProvincia = listaProvincias.getSelectedItem();
  52. System.out.println(textoProvincia);
  53. nombreP.setText("");
  54. TextField habitantes = new TextField("Habitantes");
  55. TextField codigo = new TextField("CodigoAEMET");
  56. crear.addActionListener(new Controller());
  57. cancelar.addActionListener(new Controller());
  58.  
  59. texto.add(textField);
  60. texto.add(nombreP);
  61. texto.add(habitantes);
  62. texto.add(codigo);
  63. panel.add(crear);
  64. panel.add(cancelar);
  65.  
  66. this.add(texto, BorderLayout.CENTER);
  67. this.add(panel,BorderLayout.SOUTH);
  68.  
  69. addWindowListener (new WindowAdapter (){
  70.          public void windowClosing(WindowEvent e) {
  71.          VentanaCrearPoblacion.this.dispose();
  72.             }
  73.          });
  74. }
  75. class Controller implements ActionListener {
  76. private VentanaCrearPoblacion gui;
  77. public void actionPerformed(ActionEvent e) {
  78. String label = e.getActionCommand();
  79. if(label.equals("Crear")){
  80. System.out.println("hola");
  81. try{
  82.  
  83. Aviso aviso = new Aviso(gui,e1.getMessage());
  84. }
  85. }else{
  86. VentanaCrearPoblacion.this.dispose();
  87. }
  88. }
  89. }
  90. void listChange(ItemEvent ev) {
  91.        if((ev.getItem()).equals("Desayuno")){
  92.  
  93.        }
  94.    }
  95.  
  96. }
  97.  

este es el error que genera:

Código
  1. Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
  2. at Poblacion.VentanaCrearPoblacion.initComponents(VentanaCrearPoblacion.java:51)
  3. at Poblacion.VentanaCrearPoblacion.<init>(VentanaCrearPoblacion.java:34)
  4. at principal.InterfazAWT_AEMET$Controller.EvaluarAccion(InterfazAWT_AEMET.java:231)
  5. at principal.InterfazAWT_AEMET$Controller.actionPerformed(InterfazAWT_AEMET.java:211)
  6. at java.awt.Button.processActionEvent(Unknown Source)
  7. at java.awt.Button.processEvent(Unknown Source)
  8. at java.awt.Component.dispatchEventImpl(Unknown Source)
  9. at java.awt.Component.dispatchEvent(Unknown Source)
  10. at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
  11. at java.awt.EventQueue.access$500(Unknown Source)
  12. at java.awt.EventQueue$3.run(Unknown Source)
  13. at java.awt.EventQueue$3.run(Unknown Source)
  14. at java.security.AccessController.doPrivileged(Native Method)
  15. at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
  16. at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
  17. at java.awt.EventQueue$4.run(Unknown Source)
  18. at java.awt.EventQueue$4.run(Unknown Source)
  19. at java.security.AccessController.doPrivileged(Native Method)
  20. at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
  21. at java.awt.EventQueue.dispatchEvent(Unknown Source)
  22. at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
  23. at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
  24. at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
  25. at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
  26. at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
  27. at java.awt.EventDispatchThread.run(Unknown Source)
  28.  


En línea

Usuario Invitado


Desconectado Desconectado

Mensajes: 625



Ver Perfil
Re: Meter un Frame dentro de otro Frame
« Respuesta #32 en: 27 Marzo 2015, 19:36 pm »

El error es porque listaProvincias aún está null, ya que el método initComponents es ejecutado antes que se establezcan las propiedades con los valores de los parámetros.

El constructor debería ser así:

Código
  1. public VentanaCrearPoblacion(Frame gui, AlmacenPoblaciones almacen,
  2.    List listaPoblaciones, List listaProvincias, List listaPredicciones) {
  3.    super(gui);
  4.    this.almacen = almacen;
  5.    this.listaPoblaciones = listaPoblaciones;
  6.    this.listaProvincias = listaProvincias;
  7.    this.listaPredicciones = listaPredicciones;
  8.    initComponents(gui);
  9. }


Saludos.
En línea

"La vida es muy peligrosa. No por las personas que hacen el mal, si no por las que se sientan a ver lo que pasa." Albert Einstein
Usuario Invitado


Desconectado Desconectado

Mensajes: 625



Ver Perfil
Re: Meter un Frame dentro de otro Frame
« Respuesta #33 en: 27 Marzo 2015, 21:02 pm »

Perdón por el doble post, pero creo que así hay más probabilidades que el autor del tema me lea a que edite mi respuesta anterior.

Creo que ya es hora de cerrar éste tema, se ha desvirtuado mucho. Cualquier nueva duda kikian94, por favor abrirla en un nuevo tema. No olvides marcar este tema como solucionado.


Saludos.
En línea

"La vida es muy peligrosa. No por las personas que hacen el mal, si no por las que se sientan a ver lo que pasa." Albert Einstein
kikian94

Desconectado Desconectado

Mensajes: 66


Ver Perfil
Re: Meter un Frame dentro de otro Frame
« Respuesta #34 en: 28 Marzo 2015, 12:47 pm »

si, tienes toda la razon, ya he conseguido solucionar el error, era por lo que decias :), muchas gracias por todo,que paciencia has tenido jeje
En línea

Páginas: 1 2 3 [4] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
pregunta sobre como ver los datos de un frame a otro en Netbeans
Java
XpandyX 0 2,663 Último mensaje 8 Marzo 2011, 17:56 pm
por XpandyX
Cerrar Frame al Abrir otro
Java
monsefoster 0 3,092 Último mensaje 8 Abril 2011, 19:33 pm
por monsefoster
[Solucionado] como meter un form dentro de otro en c#
.NET (C#, VB.NET, ASP)
chelita 2 12,620 Último mensaje 3 Junio 2011, 16:43 pm
por chelita
Facebook dentro de un frame.
Desarrollo Web
A2Corp 4 3,149 Último mensaje 20 Abril 2012, 18:24 pm
por A2Corp
Como pasar un Frame o un Picturebox completo de un form a otro.
Programación Visual Basic
79137913 0 1,743 Último mensaje 12 Junio 2012, 20:08 pm
por 79137913
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines