2013-11-27 94 views
0

我試圖得到它,所以當我點擊一個菜單選項時,窗口從「歡迎文本」更改爲4個按鈕,然後用戶可以點擊。然而,當我點擊模擬按鈕時,什麼都沒有發生..窗口根本不會改變..順便說一下,我總結了我的代碼到基本的東西。任何人都看到我不能說的東西?JPanel java沒有顯示

JFrame GUI = new JFrame("Graphical User Interface"); 
public gui() 
    { 
    JMenuBar menubar = new JMenuBar(); 
    JMenu Simulation = new JMenu("Simulation"); 

    theLabel = new JLabel("Welcome to the Main Menu. ",JLabel.CENTER); 
    GUI.add(theLabel); 

    menubar.add(Simulation); 
    Simulation.add(Simulationmenu); 

    Simulationmenu.addActionListener(this); 

    GUI.setJMenuBar(menubar); 
    GUI.setLocation(500,250); 
    GUI.setSize(300, 200); 
    GUI.setVisible(true); 
    } 

    public void actionPerformed(ActionEvent E){ 

if(E.getSource() == Simulationmenu){ 
    // Buttons in the menu i want to output once clicked on 'simulation' 
       thePanel = new JPanel(new GridLayout(4,0)); 

       Run = new JButton("Run"); 
       Pause = new JButton("Pause"); 
       Reset = new JButton("Reset"); 
       DisplayMaps = new JButton("Display Maps?"); 

       // Add the components to the panel: 
       thePanel.add("West", Run); 
       thePanel.add("Center", Pause); 
       thePanel.add("East", Reset); 
       thePanel.add("West", DisplayMaps); 

       // Add the panel to the contentPane of the frame: 
       GUI.add(thePanel); 

       // add this object as listener to the two buttons: 
       Run.addActionListener(this); 
+0

1)爲了更好地提供幫助,請發佈[SSCCE](http://sscce.org/)。 2)對代碼塊使用一致的邏輯縮進。代碼的縮進旨在幫助人們理解程序流程。 3)對於一個空間中的許多組件,使用['CardLayout'](http://docs.oracle.com/javase/7/docs/api/java/awt/CardLayout.html) ](http://stackoverflow.com/a/5786005/418556)。 –

回答

2

似乎在接下來你的問題,你添加一個新的面板(thePanel)到您的JFrame(GUI)時,它顯示,但在這種情況下,你必須調用JFrameGUIrevalidate()方法。

GUI.add(thePanel);之後加上GUI.revalidate(),它可以幫助你。