从内部Action类调用外部类'方法getContentPane()

时间:2012-04-04 10:09:54

标签: java jframe abstract-action

我想从内部Action类调用外部类'方法getContentPane()。我不明白为什么我的代码不起作用。

public class MainFrame extends JFrame {
    public MainFrame() {
        super("My app");
        JMenuBar menuBar = new JMenuBar();
        setJMenuBar(menuBar);

        JMenu myMenu = new JMenu("File");
        menuBar.add(myMenu);
        Action myAction = new AbstractAction("Do everything") {
            public void actionPerformed(ActionEvent e) {
                JPanel panel = new JPanel();
                panel.setBackground(Color.CYAN);
                getContentPane().add(panel, BorderLayout.CENTER);
            }
        };
        myMenu.add(myAction);
    }
}

1 个答案:

答案 0 :(得分:1)

您必须在validate();之后调用getContentPane().add(...);方法。

  

validate方法用于使容器布局   子组件再次。它应该在这个容器时调用   子组件被修改(添加到容器或从容器中删除,或   在容器出现之后,布局相关信息已经改变   显示。