Panel que no se actualiza
Hola tengo un panel al que quiero meter unos botones para reutilizar codigo y dado que dependiendo del caso necesito de uno u otros botones lo he hecho de la siguiente forma (lo abrevio para explicar el problema):
class CControls extends JPanel {
public void addCloseButton(Frame f) {
JButton closeButton = new JButton("Close");
ActionListener closeListener = new ActionListener () {
public void actionPerformed (ActionEvent e) {
frame.hide();
}
};
closeButton.addActionListener(closeListener);
frame=f;
add(closeButton);
}
public CControls(CCanvas canvas) {
super();
this.canvas = canvas;
ZoomListener zoomL= new ZoomListener ();
JButton zoomInButton = new JButton("zoom in");
zoomInButton.addActionListener(zoomL);
add(zoomInButton);
JButton zoomOutButton = new JButton("zoom out");
zoomOutButton.addActionListener(zoomL);
add(zoomOutButton);
}
la cosa es que cuando luego intento meter el boton close llamando desde otro objeto a controls.addCloseButton(frame) no aparece por ningun sitio (ya he probado llamando a validate() y a repaint() pero nada) Muchas gracias
class CControls extends JPanel {
public void addCloseButton(Frame f) {
JButton closeButton = new JButton("Close");
ActionListener closeListener = new ActionListener () {
public void actionPerformed (ActionEvent e) {
frame.hide();
}
};
closeButton.addActionListener(closeListener);
frame=f;
add(closeButton);
}
public CControls(CCanvas canvas) {
super();
this.canvas = canvas;
ZoomListener zoomL= new ZoomListener ();
JButton zoomInButton = new JButton("zoom in");
zoomInButton.addActionListener(zoomL);
add(zoomInButton);
JButton zoomOutButton = new JButton("zoom out");
zoomOutButton.addActionListener(zoomL);
add(zoomOutButton);
}
la cosa es que cuando luego intento meter el boton close llamando desde otro objeto a controls.addCloseButton(frame) no aparece por ningun sitio (ya he probado llamando a validate() y a repaint() pero nada) Muchas gracias
Prueba a ponerlo dentro del run de un hilo, y arranca ese hilo en el evento de boton asi seguramente funcione
