Вызов метода getContentPane() внешнего класса из внутреннего класса Action

Я хочу вызвать метод внешнего класса getContentPane() из внутреннего класса Action. Я не понимаю, почему мой код не работает.

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 ответ

Решение

Вы должны позвонить validate(); метод после getContentPane().add(...);,

Метод validate используется для того, чтобы контейнер снова размещал свои подкомпоненты. Он должен вызываться, когда подкомпоненты этого контейнера изменяются (добавляются или удаляются из контейнера, или изменяется информация, связанная с макетом) после отображения контейнера.

Другие вопросы по тегам