DUDA!!!!!! "AÑADIR" UN JFRAME a un jtabbepane

Iniciado por Juanma91, 3 Marzo 2014, 14:49 PM

0 Miembros y 1 Visitante están viendo este tema.

Juanma91

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Í

.rn3w.

eso no se puede hacer ya que jframe es un contenedor mayor

zonahurbana

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 (java) [Seleccionar]
package Principal;

import java.awt.FlowLayout;
import javax.swing.JDesktopPane;
import javax.swing.JFrame;
import javax.swing.JInternalFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.WindowConstants;

/**
* Se instancia un JFrame y un JDesktopPane,
* y dentro de este último se agrega un JInternalFrame.
*/

public class Main {

        @SuppressWarnings("ResultOfObjectAllocationIgnored")
public static void main(String[] args) {
new Main();
}

public Main()
{
// Instanciación de JFrame y JDesktopPane.
JFrame v = new JFrame("Soy un JFrame");
JDesktopPane dp = new JDesktopPane();
v.getContentPane().add(dp);

// Panel que irá dentro del JInternalFrame.
JPanel p = new JPanel();
p.setLayout(new FlowLayout());
p.add (new JLabel("Una etiqueta"));
p.add (new JTextField(10));

// Se construye el JInternalFrame y se le agrega el panel.
JInternalFrame internal = new JInternalFrame("Soy un JInternalFrame");
internal.add(p);

// Podemos asignar el tamaño con setSize,
                // o usar pack para que se asigne el tamaño mínimo adecuado.
internal.pack();

// Por defecto un JInternalFrame no es redimensionable ni
// tiene el botón de cerrar, así que se lo agregamos:
internal.setResizable(true);
internal.setClosable(true);

// Se agrega el JInternalFrame en el JDesktopPane.
dp.add(internal);

// Asignamos tamaño al JFrame y lo hacemos visible.
v.setSize(500,500);
v.setVisible(true);
v.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);

// Hacemos visible al JInternalFrame.
internal.setVisible(true);
}

}
Nunca dejar de aprender es importante, más allá del ritmo que se siga ...