java - 从内部 Action 类调用外部类的方法 getContentPane()

标签 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);
    }
}

最佳答案

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

The validate method is used to cause a container to lay out its subcomponents again. It should be invoked when this container's subcomponents are modified (added to or removed from the container, or layout-related information changed) after the container has been displayed.

关于java - 从内部 Action 类调用外部类的方法 getContentPane(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10009063/

相关文章:

java - 密码随机生成器 : creates the same password

java - Jackson 的@JsonProperty 的枚举

java - 如何在没有名称的情况下销毁java中的对象?

java - 将不同 swing 组件的类实例添加到 JPanel

java - 为什么要使用 java 容器?

java - 使用键绑定(bind)

java - 如何在 Java 中拆分字符串并保留分隔符?

添加 JTextfield 后 Java 不呈现组件

java - 如何使用 java.awt 支持 ctrl + shift+ 数字键盘

java - PaintComponent() 可以在 AbstractAction 类中使用吗?