2012-04-04 115 views
0

我想从内部Action类调用外部类方法getContentPane()。我不明白为什么我的代码不起作用。从内部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); 
    } 
} 
+0

你可以扩大“不工作”? – Qwerky 2012-04-04 11:05:34

回答

1

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

验证方法用于使容器再次布局其子组件 。当容器的 子容器已被 显示后,应修改此容器的 子组件(添加到容器或从容器中移除,或者 已更改布局相关信息)。

+0

谢谢。有用。 – Dmitry 2012-04-04 11:18:54