Aquí tienes un ejemplo de cómo modificar un panel desde otra clase distinta a aquella en la que se crea, a ver si te sirve:
Clase donde se crea el JPanel:
import java.awt.*;
import javax.swing.*;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
//Ejemplo para post foro aprenderaprogramar.com
public class DemoJTabbedPane extends JFrame {
// configurar GUI
public DemoJTabbedPane() {
super( "Demo de JTabbedPane " );
// crear objeto JTabbedPane
JTabbedPane panelConFichas = new JTabbedPane();
// establecer pane11 y agregarlo al objeto JTabbedPane
JLabel etiqueta1 = new JLabel( "panel uno", SwingConstants.CENTER );
JPanel panel1 = new JPanel();
panel1.add( etiqueta1 );
panelConFichas.addTab( "Ficha uno", null, panel1, "Primer panel" );
// establecer panel2 y agregarlo al objeto JTabbedPane
JLabel etiqueta2 = new JLabel( "panel dos", SwingConstants.CENTER );
final JPanel panel2 = new JPanel();
panel2.setBackground( Color.YELLOW );
panel2.add( etiqueta2 );
panelConFichas.addTab( "Ficha dos", null, panel2, "Segundo panel" );
panel2.addMouseListener(new MouseAdapter() {
public void mousePressed(MouseEvent me) {
System.out.println("Has hecho click sobre el panel");
Evaluacion ev = new Evaluacion();
ev.cambiarColor(panel2);
}
});
// establecer panel3 y agregarlo al objeto JTabbedPane
JLabel etiqueta3 = new JLabel( "panel tres" );
JPanel panel3 = new JPanel();
panel3.setLayout( new BorderLayout() );
panel3.add( new JButton( "Norte" ), BorderLayout.NORTH );
panel3.add( new JButton( "Oeste" ), BorderLayout.WEST );
panel3.add( new JButton( "Este" ), BorderLayout.EAST );
panel3.add( new JButton( "Sur" ), BorderLayout.SOUTH );
panel3.add( etiqueta3, BorderLayout.CENTER );
panelConFichas.addTab( "Ficha tres", null, panel3, "Tercer panel" );
// agregar objeto JTabbedPane al contenedor
getContentPane().add( panelConFichas );
setSize( 250, 200 );
setVisible( true );
} // fin del constructor
public static void main( String args[] )
{
DemoJTabbedPane demoPanelConFichas = new DemoJTabbedPane();
demoPanelConFichas.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
}
} // fin de la clase DemoJTabbedPane
Clase donde se modifica el JPanel:
import java.awt.*;
import javax.swing.*;
public class Evaluacion {
private int x;
//Constructor
public Evaluacion() {
x = 0;
}
public void cambiarColor(JPanel panelRecibido) {
if (panelRecibido.getBackground() == Color.YELLOW) {
panelRecibido.setBackground( Color.GREEN );
}
else {panelRecibido.setBackground( Color.YELLOW );}
}
}