Вызов метода 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 используется для того, чтобы контейнер снова размещал свои подкомпоненты. Он должен вызываться, когда подкомпоненты этого контейнера изменяются (добавляются или удаляются из контейнера, или изменяется информация, связанная с макетом) после отображения контейнера.