Nowy komponent wyświetla się na starym, pomimo jego usunięcia

0

Witam serdecznie.

Mam taki złośliwy kawałek kodu...
w którym niestey ustawianie nowego komponentu nie działa poprawnie...
Czy mógłby mi wyjaśnić dalczego? (Podobna sytuacja występuje w moim
docelowym projekcie - ten fragment napisałem dla testów.)

Z góry dzięki za wyjaśnienia.

package framex.jpanel;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;

public class Framex extends JFrame {

private static final long serialVersionUID = 1L;
JPanel CENTER;

public Framex() {
	setSize(200, 200);
	CENTER = new JPanel();
	//System.out.println(CENTER.isOpaque());
	//CENTER.setOpaque(!CENTER.isOpaque());
	CENTER.add(new Panelex(this));
	System.out.println(getContentPane().isOpaque());
	setContentPane(CENTER); //!i1a
	*getContentPane().add(CENTER); *!i1b	
	System.out.println(CENTER.isOpaque());
}

public void changePane(JPanel panel) {

	//!i2a
	CENTER.removeAll();
	CENTER.add(panel);
	CENTER.validate();
	
	//!i2b
	/*getContentPane().removeAll();
	getContentPane().add(panel);
	getContentPane().validate();*/
	
	//!=>tylko kombinacja 1b i 2b jest ok
	//a co jak nie mam dostępu do getContentPane()!???
}

public static void main(String[] args) {
	SwingUtilities.invokeLater(new Runnable() {
		
		@Override
		public void run() {
			new Framex().setVisible(true);
		}
	});
}

}

class Panelex extends JPanel {

//Framex framex;
private static final long serialVersionUID = 1L;

public Panelex(final Framex framex) {
	//this.framex = framex;
	JButton button = new JButton("close me");
	add(button);
	button.addActionListener(new ActionListener() {
		
		@Override
		public void actionPerformed(ActionEvent arg0) {
			framex.changePane(new PanelexNowy());
		}
	});
}

}

class PanelexNowy extends JPanel {

private static final long serialVersionUID = 1L;

public PanelexNowy() {
	add( new JLabel("Super nowy") );
}

}

0

ok. sprawa się wyklarowała.

1 użytkowników online, w tym zalogowanych: 0, gości: 1