Foro de elhacker.net

Programación => Java => Mensaje iniciado por: Juanma91 en 3 Marzo 2014, 14:49 pm



Título: DUDA!!!!!! "AÑADIR" UN JFRAME a un jtabbepane
Publicado por: Juanma91 en 3 Marzo 2014, 14:49 pm
Hay alguna forma de mostrar un jframe que hice en modo diseño dentro del panel de una pestaña. Lo máximo que he conseguido es que aparezca aparte pero no quiero eso, quiero que se muestre dentro. El problema es que he investigado y segun se comenta un jframe no puede estar dentro de un jtabbepane pero con panel si. Esa es mi duda... y también saber como controlar que si una pestaña este abierta que no se abra más veces

ASÍ
(http://fotos.subefotos.com/01c3fc19cde98398d2d25c88e2faf269o.png)


Título: Re: DUDA!!!!!! "AÑADIR" UN JFRAME a un jtabbepane
Publicado por: bengy en 3 Marzo 2014, 15:49 pm
eso no se puede hacer ya que jframe es un contenedor mayor


Título: Re: DUDA!!!!!! "AÑADIR" UN JFRAME a un jtabbepane
Publicado por: zonahurbana en 9 Marzo 2014, 19:30 pm
La verdad no creo que sea posible agregar un JFrame dentro de un JPanel, ya que los JFrame hacen que aparezca un botón adicional en la barra de tareas (aparece 1 por cada JFrame). Pero lo que sí, es que existen los JInternalFrame, que pueden agregarse a los JDesktopPane, que aunque no son JPanel pueden agregarse a los JFrame.

Acá un código ejemplo (extraído de chuidiang.org, sólo que le cambié un poco lo que decían los comentarios):
Código
  1. package Principal;
  2.  
  3. import java.awt.FlowLayout;
  4. import javax.swing.JDesktopPane;
  5. import javax.swing.JFrame;
  6. import javax.swing.JInternalFrame;
  7. import javax.swing.JLabel;
  8. import javax.swing.JPanel;
  9. import javax.swing.JTextField;
  10. import javax.swing.WindowConstants;
  11.  
  12. /**
  13.  * Se instancia un JFrame y un JDesktopPane,
  14.  * y dentro de este último se agrega un JInternalFrame.
  15.  */
  16.  
  17. public class Main {
  18.  
  19.        @SuppressWarnings("ResultOfObjectAllocationIgnored")
  20. public static void main(String[] args) {
  21. new Main();
  22. }
  23.  
  24. public Main()
  25. {
  26. // Instanciación de JFrame y JDesktopPane.
  27. JFrame v = new JFrame("Soy un JFrame");
  28. v.getContentPane().add(dp);
  29.  
  30. // Panel que irá dentro del JInternalFrame.
  31. JPanel p = new JPanel();
  32. p.setLayout(new FlowLayout());
  33. p.add (new JLabel("Una etiqueta"));
  34. p.add (new JTextField(10));
  35.  
  36. // Se construye el JInternalFrame y se le agrega el panel.
  37. JInternalFrame internal = new JInternalFrame("Soy un JInternalFrame");
  38. internal.add(p);
  39.  
  40. // Podemos asignar el tamaño con setSize,
  41.                // o usar pack para que se asigne el tamaño mínimo adecuado.
  42. internal.pack();
  43.  
  44. // Por defecto un JInternalFrame no es redimensionable ni
  45. // tiene el botón de cerrar, así que se lo agregamos:
  46. internal.setResizable(true);
  47. internal.setClosable(true);
  48.  
  49. // Se agrega el JInternalFrame en el JDesktopPane.
  50. dp.add(internal);
  51.  
  52. // Asignamos tamaño al JFrame y lo hacemos visible.
  53. v.setSize(500,500);
  54. v.setVisible(true);
  55. v.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
  56.  
  57. // Hacemos visible al JInternalFrame.
  58. internal.setVisible(true);
  59. }
  60.  
  61. }