JPanelの切り替えと再描画
ContainerにJPanelをaddし、ボタンを押すことで現在addされているJPanelとは違うJPanelを生成し、再描画させようとしているのですが、うまくいかないため、質問致しました。
-- src ---
public class Test extends JFrame implements ActionListener {
Container container;
JPanel panel;
JButton btn;
public Test() {
container = getContentPane();
container.setLayout(new BorderLayout());
// ボタン用パネル
JPanel btnp = new JPanel();
btnp.setLayout(new FlowLayout());
container.add(btnp, BorderLayout.NORTH);
btn = new JButton("aaa");
btn.addActionListener(this);
btnp.add(btn);
// 対象のパネル
panel = new JPanel();
(略)panelの設定
container.add(panel, BorderLayout.CENTER);
setVisible(true);
setBounds(50, 50, 300, 300);
setDefaultCloseOperation(EXIT_ON_CLOSE);
}
public void actionPerformed(ActionEvent e) {
if (e.getSource() == btn) {
container.remove(1);
panel = new JPanel(); // 本来はJPanelを継承したクラスをnewしています
container .add(panel);
repaint(); // ※
}
}
public static void main(String args[]) {
Test t = new Test();
}
}
※の箇所をcontainer.repaint() にしたり、paintImmediaely() にしたり出来そうな事を色々試したつもりではいるのですが、うまくいきません…
ボタン押下後に、ウィンドウの枠をクリックすると描画されるのですが、いまいちよくわかりません…
なにか分かる方いらっしゃいましたらご教授願います。
お礼
まさにこれと同じ症状です。 早速ためしてみたところ解決しました!!! ほんとうにありがとうございました!!!!!!