Java - Problema pestañas JTabbedPane desde otro Panel

 
Vista:

Problema pestañas JTabbedPane desde otro Panel

Publicado por Diego (5 intervenciones) el 10/06/2018 20:34:12
Buenas tardes.

Tengo un problema al intentar añadir un tab desde otro panel.

Tengo un jFrame con un JTabbedPane y un Menu. Al añadir un tab desde el menú no tengo ningún problema utilizando

1
2
TabPrincipal.addTab("Ver", Panel_Info);
TabPrincipal.setSelectedComponent( Panel_Info);

Donde Panel_Info es un jPanelForm

El problema viene cuando intento hacer lo mismo desde un botón de este panel(Panel_Info). Lo que quiero hacer es abrir otra pestaña al tab al presionar este botón y lo he intentado de dos maneras:


1
2
3
4
PanelLanzadera Panel_Lanzadera=new PanelLanzadera(); //Es el panel que quiero agregar al tab
Principal p = new Principal(); //Es el formulario donde está el jTabbedPane
p.TabPrincipal.addTab("Lanzadera", Panel_Lanzadera);
p.TabPrincipal.setSelectedComponent( Panel_Lanzadera);

No me da error pero tampoco me abre la pestaña.


He creado la siguiente función en el formulario donde está el jTabbedPane
1
2
3
4
5
6
public void Lanzadera(){
    PanelLanzadera Panel_Lanzadera=new PanelLanzadera();
    TabPrincipal.addTab("Lanzadera", Panel_Lanzadera);
    TabPrincipal.setSelectedComponent(Panel_Lanzadera);
    JOptionPane.showMessageDialog(null, "Ejecutado correctamente");
}

Y lo llamo desde el botón del Panel_Info

1
2
Principal p = new Principal();
p.Lanzadera();

Pero igualmente no hace nada, aunque si da el mensaje "Ejecutado correctamente"


Alguna idea de donde puedo estar fallando?

Muchas gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Problema pestañas JTabbedPane desde otro Panel

Publicado por Tom (1831 intervenciones) el 10/06/2018 20:41:48
En java ¿ sabes qué significa o qué hace "new" ?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Problema pestañas JTabbedPane desde otro Panel

Publicado por Diego (5 intervenciones) el 10/06/2018 21:24:23
Hola, gracias por contestar.

No encontré otra manera de poder referirme al tab desde otro panel. Supongo que no habrá que hacerlo con new, pero no se me ocurre ninguna otra forma.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Pedro
Val: 305
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Problema pestañas JTabbedPane desde otro Panel

Publicado por Pedro (102 intervenciones) el 10/06/2018 22:59:00
New es para llamar al constructor de la clase y lo que hace es guardar un espacio de memoria para el nuevo objeto creado.

@Diego creo que el problema que tienes si no estoy equivocado es por el alcance, para tener claro el alcance tienes que comprender lo que es un bloque de código.

un bloque de código es esto {} encontes si yo hago esto:
==============
EJEMPLO CON ERROR
==============
1
2
3
4
5
6
7
8
9
10
11
{
{
String hola="hola";
}
 
{
//Aquí me va decir que hay un error porque estoy fuera del alcance la variable hola
System.out.println(hola);
}
 
}

================
EJEMPLO FUNCIONAL
================

1
2
3
4
5
6
7
8
9
10
11
12
13
14
{
//Esto es un bloque de código
 
private String hola="hola";
   {
     //Esto es otro bloque de código
   }
 
   {
      //Esto es otro bloque de código
     //Ahora si está dentro del alcance de la variable
     System.out.println(hola);
   }
}

=======================
Te he explicado el rollo del alcance de las variables para que puedas aplicarlo pero en este caso al Objeto JTabbedPane de esta forma podrás hacer referencia a dicho objeto exclusivo desde cualquier bloque de código .

Porque al usar new lo que estás haciendo es crear un nuevo objeto independiente de JTabbedPane , espero haber sido explícito y haber podido comprender y resolver el contexto de tu pregunta.

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

Problema pestañas JTabbedPane desde otro Panel

Publicado por Diego (5 intervenciones) el 10/06/2018 23:43:17
Posiblemente no me haya explicado bien.

Lo que necesito es crear una nueva pestaña en un jTabbedPane que se encuentra en un jFrameForm desde un jPaneForm.

Consigo ejecutar el método Lanzadera() que se encuentra en el jFrameForm ya que da el mensaje de messagebox, pero no consigo que añada la pestaña. Si lanzo ese mismo método desde el jFrameForm si que funciona correctamente.

Muchas gracias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de kingk
Val: 247
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Problema pestañas JTabbedPane desde otro Panel

Publicado por kingk (108 intervenciones) el 11/06/2018 03:17:48
Hola, como ya te indicaron al escribir la linea
1
Principal p=new Principal();
Estas creando un nuevo objeto de tipo Principal, y con su metodo Lanzadera lo unico que hara es agregar el tab
en el JTabbedPane del nuevo objeto Principal y no al JTabbedPane del panel en el que esta tu boton.

Una solucion seria por ejemplo en la Clase Principal definir la accion del boton por ejemplo asi:
1
2
3
public void actionPerformed(ActionEvent ev){
    Lanzadera();
}

Asi de simple.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Problema pestañas JTabbedPane desde otro Panel

Publicado por Diego (5 intervenciones) el 11/06/2018 08:54:48
Hola, gracias por la respuesta.

Eso no sería problema si lo llamara desde el mismo Principal, pero al tener que llamarlo desde otro Panel externo no veo la manera de referirme a él sin crear la nueva instancia, no se como se hace.

Gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de kingk
Val: 247
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Problema pestañas JTabbedPane desde otro Panel

Publicado por kingk (108 intervenciones) el 11/06/2018 15:06:09
Lo que entiendo es que quieres que el boton definido en la clase Panel_Info agregue pestañas en el JtabbedPane definido en la clase Principal.
Lo que podrias hacer es mandar como parametro la referencia al objeto JTabbedPane de tu clase Principal. Por ejemplp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
//Clase Panel_Info
 
//Constructor
public Panel_Info(JtabbedPane panelTabs)
{
//Codigo de inicializacion
jbutton1.addActionListener(new ActionListener(){
     public void actionPerformed(ActionEvent ev)
     {
panelTab.addTab("Lanzadera", Panel_Lanzadera);
panelTabs.setSelectedComponent( Panel_Lanzadera);
     }
});
}

Y para crear el objeto Panel_info
PanelInfo panel_info=new PanelInfo(TabPrincipal);
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

Problema pestañas JTabbedPane desde otro Panel

Publicado por Diego (5 intervenciones) el 14/06/2018 10:12:14
Muchas gracias, funciona perfecto!!!

Un saludo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar