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

 

 


Tema destacado: Rompecabezas de Bitcoin, Medio millón USD en premios


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java
| | | |-+  Juego "El ahorcado" con GUI.
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Juego "El ahorcado" con GUI.  (Leído 6,480 veces)
Aikanáro Anário


Desconectado Desconectado

Mensajes: 694



Ver Perfil WWW
Juego "El ahorcado" con GUI.
« en: 2 Octubre 2011, 08:16 am »

Tengo que hacer una interfaz gráfica que luzca como esto: http://i333.photobucket.com/albums/m399/Link02/ahorcado.gif

Mi ventana hasta ahora luce así: http://i333.photobucket.com/albums/m399/Link02/miventa.png
 :xD y no se parece en nada  :rolleyes:. Creo que mi problema está en el layout no sé cuál usar para que me quede así o cuáles métodos usar, he probado con FloWLayout, pero se ajusta y con GridBagLayout que es el que tiene ahora, pero ya ven como está. Además tampoco sé como poner la imagen al lado.

Esta es la parte de la ventana:
Código
  1. JFrame f = new JFrame();
  2. f.setTitle("El Ahorcaito");
  3. f.setSize(760,570);
  4. f.getContentPane().setLayout(new GridBagLayout());
  5.  
  6. f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  7.  
  8. //menu
  9. mb = new JMenuBar();
  10. menu = new JMenu("Menú");
  11. menu.add(new JMenuItem("Reiniciar"));
  12. menu.addSeparator();
  13. menu.add(new JMenuItem("Salir"));
  14. mb.add(menu);
  15. f.setJMenuBar(mb);
  16. f.setVisible(true);
  17.  
  18. //posiciones
  19. gbc.gridx = 0;
  20. gbc.gridy= 0;
  21. gbc.gridwidth = 1;
  22. gbc.gridheight = 1;
  23. l1 = new JLabel("Palabra:");
  24. f.getContentPane().add(l1,gbc);
  25.  
  26. gbc.gridx = 0;
  27. gbc.gridy = 1;
  28. gbc.gridwidth = 1;
  29. gbc.gridheight = 1;
  30. l2 = new JLabel("Intentos:");
  31. f.getContentPane().add(l2, gbc);
  32.  
  33. gbc.gridx = 0;
  34. gbc.gridy = 2;
  35. gbc.gridwidth = 1;
  36. gbc.gridheight = 1;
  37. l3 = new JLabel("Letras:");
  38. String[] list = {"A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R"
  39. +"S","T","U","V","W","X","Y","Z"};
  40. JComboBox jcb = new JComboBox(list);
  41. f.getContentPane().add(l3, gbc);
  42. gbc.gridx = 0;
  43. gbc.gridy = 3;
  44. gbc.gridwidth = 1;
  45. gbc.gridheight = 1;
  46. f.getContentPane().add(jcb,gbc);
  47.  
  48.  
  49. gbc.gridx = 0;
  50. gbc.gridy = 4;
  51. gbc.gridwidth = 1;
  52. gbc.gridheight = 1;
  53. l4 = new JLabel("Mensajes:");
  54. f.getContentPane().add(l4, gbc);
  55. }

Veo que se parece un poco a HTML, pero más complicado.

Básicamente lo que necesito es saber como crear un "contenedor" para cada uno de los campos y que queden más separados y alineados a la izquierda.


Ya me ha quedado más o menos, creando paneles:
http://i333.photobucket.com/albums/m399/Link02/mivent.png

Pero ahora ¿Cómo agregó un elemento a un panel? un botón por ejemplo. Estoy intentando hacerlo así:
Código
  1. //panel de las palabras
  2. l1 = new JLabel("Palabras:");
  3. gbc.gridx = 0;
  4. gbc.gridy = 0;
  5. f.getContentPane().add(l1,gbc);
  6.  
  7. Panel panelPalabras = new Panel();
  8. panelPalabras.setLayout(null);
  9. panelPalabras.setSize(360,90);
  10. panelPalabras.setBackground(Color.lightGray);
  11. gbc.gridy = 1;
  12.  
  13.  
  14. boton = new JButton();
  15. boton.setText("OK");
  16. boton.setVisible(true);
  17. panelPalabras.add(boton);
  18. f.getContentPane().add(panelPalabras,gbc);
  19. f.setVisible(true);

Pero no aparece el botón.

Solo aparece si lo pongo fuera del panel:
Código
  1. f.getContentPane().add(boton);


« Última modificación: 2 Octubre 2011, 19:38 pm por Aikanáro Anário » En línea

Lo que faltaba en internet: http://binar10s.blogspot.com/
Leyer


Desconectado Desconectado

Mensajes: 786


leyer@elhacker.net


Ver Perfil WWW
Re: Juego "El ahorcado" con GUI.
« Respuesta #1 en: 2 Octubre 2011, 19:47 pm »

Al frame colocale como layout el GridLayout(rows, cols) y le colocas 1 flas, 2 columnas, luego creas 2 paneles uno que va a hacer el de la izquierda y el otro va a ser el de la derecha y los agregas,luego al panel de la derecha le seteas el layaut  a GridLayout(4, 1), luego creas 4 paneles que seran para  palabras intentos,letras mensajes y los agregas el panel de la derecha luego le colocas un border a cada panel con BorderFactory.createTitledBorder(title) y seria la misma interfaz ;)


En línea

Aikanáro Anário


Desconectado Desconectado

Mensajes: 694



Ver Perfil WWW
Re: Juego "El ahorcado" con GUI.
« Respuesta #2 en: 2 Octubre 2011, 20:04 pm »

Y qué tipo de  Layouts van a tener los paneles internos? (palabra, letra, mensaje, intentos)?
Y cómo le específico la posición que cada uno de esos paneles va a ocupar? Ej. Si el panel de palabra va a estar en la columna 1, fila 1.



Lo he puesto como he entendido que me dijiste que lo pusieras :P

En los dos primeros paneles (palabras e intentos) a los JLabels le añadí el panel a al que pertenecen, en las otras dos (letras y mensajes) lo hice al revés, al panel le añadí su JLabel. No sé cuál sea la forma correcta, me parece que es como están las dos primeras. En cualquier caso no me salen los nombres de las etiquetas.

Además el panel queda tapado por la ventana, o sea tengo que anchar la ventana o minimizarla para poderlos ver al tamaño completo que tienen.

Así es como se ve: http://i333.photobucket.com/albums/m399/Link02/mivent-1.png

Código
  1. //ventana
  2. this.setTitle("El Ahorcaito");
  3. this.setBounds(0,0,760,570);
  4. this.getContentPane().setLayout(new GridLayout(1,2));
  5. this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  6. this.setVisible(true);
  7.  
  8. //IZQUIERDO
  9. Panel panelIzq = new Panel();
  10. panelIzq.setLayout(new GridLayout(4,1));
  11.  
  12. //panel de las palabras
  13. l1 = new JLabel("Palabras:");
  14. Panel panelPalabras = new Panel();
  15. panelPalabras.setLayout(null);
  16. panelPalabras.setSize(360,90);
  17. panelPalabras.setBackground(Color.lightGray);
  18.  
  19. l1.add(panelPalabras);
  20. panelIzq.add(l1);
  21.  
  22. //panel de intentos
  23. l2 = new JLabel("Intentos:");
  24. Panel panelIntentos = new Panel();
  25. panelIntentos.setLayout(null);
  26. panelIntentos.setSize(360,90);
  27. panelIntentos.setBackground(Color.lightGray);
  28.  
  29. l2.add(panelIntentos);
  30. panelIzq.add(l2);
  31.  
  32. //panel de letras
  33. l3 = new JLabel("Letras:");
  34. Panel panelLetras = new Panel();
  35. panelLetras.setLayout(null);
  36. panelLetras.setSize(360,110);
  37. panelLetras.setBackground(Color.lightGray);
  38.  
  39. panelLetras.add(l3);
  40. panelIzq.add(panelLetras);
  41.  
  42. //panel de mensajes
  43. l4 = new JLabel("Mensajes:");
  44. Panel panelMensajes = new Panel();
  45. panelMensajes.setLayout(null);
  46. panelMensajes.setSize(360,110);
  47. panelMensajes.setBackground(Color.lightGray);
  48.  
  49. panelMensajes.add(l4);
  50. panelIzq.add(panelMensajes);
  51.  
  52. this.getContentPane().add(panelIzq);
  53.  
  54. //DERECHO
  55. Panel panelDer = new Panel();
  56. panelDer.setLayout(new GridLayout(1,1));
  57. this.getContentPane().add(panelDer);
  58.  
  59. //la imagen
  60. l5i = new JLabel();
  61. l5i.setIcon(imagen[0]);
  62. this.getContentPane().add(l5i);

Probe de la forma siguiente y no funciona tampoco:
Código
  1. l1 = new JLabel("Palabras:");
  2. JPanel panelPalabras = new JPanel();
  3. panelPalabras.setLayout(new GridBagLayout());
  4. panelPalabras.setSize(360,90);
  5. panelPalabras.setBackground(Color.lightGray);
  6.  
  7. gbc.gridx = 0;
  8. gbc.gridy = 0;
  9. gbc.gridheight = 1;
  10. gbc.gridwidth = 1;
  11. l1.add(panelPalabras,gbc);
  12. gbc.gridy = 1;
  13. panelIzq.add(l1,gbc);



Es que pensaba que el título iba como un label, como en HTML :p. Pero ya veo que no.

Lo cambié así y ahora funciona:
Código
  1. JPanel panelPalabras = new JPanel();
  2. panelPalabras.setLayout(null);
  3. panelPalabras.setSize(360,90);
  4. panelPalabras.setBackground(Color.lightGray);
  5. titulo = BorderFactory.createTitledBorder("Palabras");
  6. panelPalabras.setBorder(titulo);
  7.  
  8. panelIzq.add(panelPalabras);



Ahora no puedo cambiar el ícono de la taza de cafe de java, tengo esta sentencia en el constructor:
Código
  1. this.setIconImage(Toolkit.getDefaultToolkit().getImage("icono.gif"));

tampoco funciona esta:
Código
  1. this.setIconImage(new ImageIcon(getClass().getResource("icono.gif").getImage()));

la imagen icono.gif está en la carpeta bin del mismo proyecto.
« Última modificación: 3 Octubre 2011, 01:59 am por Aikanáro Anário » En línea

Lo que faltaba en internet: http://binar10s.blogspot.com/
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
"""BUSCO EJEMPLO VB PARA ENVIAR MAILS""""
Programación Visual Basic
gera 1 6,595 Último mensaje 1 Septiembre 2005, 00:14 am
por programatrix
De donde puedo descargar utilidades: "Formas", "Estilos", "Motivos", D
Diseño Gráfico
Ad0nis 2 8,817 Último mensaje 2 Septiembre 2006, 15:48 pm
por Ad0nis
[Ayuda] modificar "start page" en "internet explorer" con "batch"
Scripting
taton 7 17,255 Último mensaje 20 Septiembre 2006, 01:45 am
por taton
Ayuda con el juego el ahorcado
Programación C/C++
Classic77 4 4,099 Último mensaje 7 Diciembre 2012, 15:21 pm
por durasno
necesito ayuda! ahorcado en "c"
Programación C/C++
ElizabethB 5 3,274 Último mensaje 30 Enero 2017, 23:37 pm
por dato000
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines