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() にしたり出来そうな事を色々試したつもりではいるのですが、うまくいきません… ボタン押下後に、ウィンドウの枠をクリックすると描画されるのですが、いまいちよくわかりません… なにか分かる方いらっしゃいましたらご教授願います。
↧