2012-04-04 3 views
0

Я хочу вызвать метод внешнего класса 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); 
    } 
} 
+0

Можете вы рассказать о "не работает"? – Qwerky

ответ

1

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

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

+0

Спасибо. Оно работает. – Dmitry

Смежные вопросы