2014-02-17 604 views
0

嗨即時在做我的程序的主頁,我想要發生的是當我點擊迷宮按鈕時,迷宮班將出現,並與六邊形按鈕相同。向另一個班級顯示班級

你能告訴我我的程序有什麼問題嗎?每當我運行並單擊按鈕什麼都不會發生。感謝您的巨大幫助。

import java.awt.Component; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 
import java.lang.*; 
import javax.swing.JButton; 
import javax.swing.JFrame; 
import javax.swing.JLabel; 
import javax.swing.JPanel; 

public class Center extends JFrame { 

Maze x = new Maze(); 
HEX h = new HEX(); 


JPanel jp = new JPanel(); 
JButton jb = new JButton("Maze"); 
JButton jb1 = new JButton("Hex"); 

JFrame frame = new JFrame(); 


public Center() 
{ 
    frame.setTitle("Prims Maze Generation"); 
    //setVisible(true); 
    //setSize(400,200); 
    setDefaultCloseOperation(EXIT_ON_CLOSE); 
    frame.setVisible(true); 
    frame.setSize(400, 200); 
    jp.add(jb); 
    jp.add(jb1); 
    frame.add(jp); 

    jb.addActionListener(new ActionListener(){ 

     public void actionPerformed(ActionEvent e) 
     { 

      x.setVisible(true); 
      frame.pack(); 
     } 
    }); 
    jb.addActionListener(new ActionListener(){ 
     public void actionPerformed (ActionEvent e) 
     { 
      h.setVisible(true); 

     } 
    }); 

} 

public static void main(String args[]) 
{ 
    Center p = new Center(); 
} 

} 
+0

是什麼迷宮ñ十六進制從? – Sanjeev

回答

0

我曾經有過這樣的事情發生在我身上。嘗試使用setVisible()方法調整幀的大小。試試這個:

public Center() 
{ 
frame.setTitle("Prims Maze Generation"); 
//setVisible(true); 
//setSize(400,200); 
setDefaultCloseOperation(EXIT_ON_CLOSE); 
frame.setVisible(true); 
frame.setSize(400, 200); 
jp.add(jb); 
jp.add(jb1); 
frame.add(jp); 

jb.addActionListener(new ActionListener(){ 

    public void actionPerformed(ActionEvent e) 
    { 

     x.setVisible(true); 
     frame.setSize(400, 200); 
     frame.pack(); 
    } 
}); 
jb.addActionListener(new ActionListener(){ 
    public void actionPerformed (ActionEvent e) 
    { 
     h.setVisible(true); 
     frame.setSize(400, 200); 

    } 
}); 
} 
+0

延伸?我已經嘗試過,但仍然無法使用,如果單擊此按鈕,則不會發生任何事情。 – user96913

+0

您可以上傳Eclipse項目嗎(如果您使用的是Eclipse)? – MrLolEthan

+0

我可以在哪裏上傳?對這件事情感到抱歉。 :) – user96913

1

任何東西之前,你的類已經是一個JFrame,要麼使用類JFrame或使用該實例JFrame(和刪除的JFrame擴展 - 只要做到這一點),不做

您的問題和簡單修復(但可能不會產生您的預期結果)。

  • JFrame有一個默認BorderLayout,這時候你添加組件,將自動放置在BorderLayout.CENTER位置。每個職位可能只有一個組件。您正嘗試將三個組件添加到CENTER而不知道它。的修復如果指定每個分量的不同位置,即BorderLayout.NORTHBorderLayout.SOUTH

這裏是更清潔修復

  • 使用一個CardLayout。假設MazeHex已經JPanels(如果他們不那麼做那就這樣。這樣做

    CardLayout card = new CardLayout(); 
    JPanel mainPanel = new JPanel(card); 
    JPanel firstVisiblePanel = new JPanel(); 
    Hex hex = new Hex(); 
    Maze maze = new Maze(); 
    
    public Center() { 
        mainPanel.add(firstVisiblePanel, "initialPanel"); 
        mainPanel.add(hex, "hex"); 
        mainPanel.add(maze, "maze"); 
    
        final JButton jbtHex = new JButton("Hex"); 
        jbtHex.addActionListener(new ActionListener(){ 
         public void actionPerformed(ActionEvent e) { 
          card.show(mainPanel, "hex"); 
         } 
        }); 
        // do the same as above for the other panels. 
        .... 
        frame.add(mainPanel); <------- This is the ONLY panel you add to the frame. 
        frame.setVisible(true); <----- Should be the LAST thing you do. 
    } 
    

多見於How to Use CardLayout和運行SO Example

相關問題