Tu respuesta es implementar un Gestor de JPanels, dicho gestor tendrá referencias a TODAS las JPanels agregadas al JTabbedPane , con ello , simplemente llamarás a las funciones del gestor para modificar el comportamiento de cualquier JPanel disponible en tu aplicación
|
| |-> JPanel(JPanel1
)--|-------| | |-> JPanel(JPanelx
)----------| | |----->GestorTabs
| |-> JPanel(JPanely
)----------| |-> JPanel(JPanel2
)--|-------|
Bueno , te dejo un ejemplo que escribi, basándome en tu código , espero que te sirva, lo que hace es que toma el texto del textbox del primer JPanel y lo muestra en el label del segundo.
import javax.swing.JLabel;
import java.awt.Dimension;
import javax.swing.JPanel;
public class Ventana2
extends JPanel implements Gestionable
{
private Gestor gestor;
public Ventana2(Gestor gestor) {
this.gestor = gestor;
initComponents();
}
private void initComponents() {
jLabel1.
setPreferredSize(new Dimension(200,
25)); jLabel1.setText("Hola a todos");
this.add(jLabel1);
}
public void setText
(String text
) { jLabel1.setText(text);
}
public Gestor getGestor(){
return this.gestor;
}
}
import javax.swing.JTextField;
import java.awt.Dimension;
import javax.swing.JButton;
import javax.swing.JPanel;
public class Ventana1
extends JPanel implements Gestionable
{
private Gestor gestor;
public Ventana1(Gestor gestor) {
this.gestor = gestor;
iniciarInterfaz();
}
private void iniciarInterfaz() {
GestorTabs gesorTabs = new GestorTabs(this);
jTextField1.setText("escribe algo y oprime enter");
jTextField1.
setPreferredSize(new Dimension(200,
25)); jTextField1.addActionListener(gesorTabs);
boton.addActionListener(gesorTabs);
boton.setName("boton enviar");
this.add(jTextField1);
this.add(boton);
}
return this.jTextField1;
}
public Gestor getGestor(){
return this.gestor;
}
}
public interface Gestionable {
public Gestor getGestor();
}
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
Gestionable ventana;
public GestorTabs(Gestionable panel){
this.ventana = panel;
}
if(ventana instanceof Ventana1){
Ventana1 ven1 = (Ventana1)ventana;
this.ejecutarVentana1(ven1, ven1.getCajaTexto().getText());
}
}
/**
*
* @param ven
* @param textoMostrar
*/
public void ejecutarVentana1
(Ventana1 ven,
String textoMostrar
){ Gestor ges = this.ventana.getGestor();
Ventana2 vent2 = (Ventana2)ges.getPanel("ventana 2");
vent2.setText(textoMostrar);
}
}
import java.awt.Component;
import java.awt.Container;
import javax.swing.JPanel;
public class Gestor {
this.container = conta;
}
/**
* Devuelve el panel especificado por nombre
* @param name
* @return
*/
Component []componentes
= this.
container.
getComponents(); for(Component conp
: this.
container.
getComponents()){ if(name.equals(panel.getName())){
return panel;
}
}
return null;
}
}
import javax.swing.JFrame;
import javax.swing.JTabbedPane;
public static void main
(String[] args
) { Gestor gestor = new Gestor(panel);
Ventana1 vent = new Ventana1(gestor);
Ventana2 vent2 = new Ventana2(gestor);
vent.setName("ventana 1");
vent2.setName("ventana 2");
panel.addTab("Ventana 1" ,vent);
panel.addTab("Ventana 2",vent2);
panel.setBounds(200, 5000, 6000 ,7000);
panel.setVisible(true);
prin.getContentPane().add(panel);
prin.setVisible(true);
prin.setBounds(500, 200, 500 ,500);
prin.
setDefaultCloseOperation(JFrame.
EXIT_ON_CLOSE); }
}