0

内側の 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);
    }
}
4

1 に答える 1

1

validate();の後にメソッドを呼び出す必要がありますgetContentPane().add(...);

検証メソッドは、コンテナにそのサブコンポーネントを再度レイアウトさせるために使用されます。コンテナーが表示された後に、このコンテナーのサブコンポーネントが変更された (コンテナーに追加またはコンテナーから削除された、またはレイアウト関連の情報が変更された) 場合に呼び出す必要があります。

于 2012-04-04T10:51:55.830 に答える