2015-05-18 162 views
0

我試圖將JPanel從另一個類添加到另一個JPanel。該程序不會再拋出錯誤,並且所有方法都已運行,但新面板只是黑屏。該方案的基本版本看起來如下:將JPanel添加到另一個類中的另一個JPanel

package ninjadragon; 

import java.awt.*; 
import javax.swing.*; 
import java.awt.event.*; 

public class NinjaDragon extends JFrame implements ActionListener{ 

public JPanel panelMain; 
public JPanel panelTurnBase; 

public static void main(String[] args) { 
    NinjaDragon(); 
} 

public static void NinjaDragon() { 
    NinjaDragon frame; 
    frame = new NinjaDragon(); 
    frame.CreateMenuScreen(); 
    JFrame.setDefaultLookAndFeelDecorated(true); 
    frame.setSize(750, 750); 
    frame.show(); 
    frame.setResizable(false); 
    frame.pack(); 
} 

private void CreateMenuScreen() { 
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    Container window = getContentPane(); 
    panelMain =new JPanel(); 
    panelMain.setPreferredSize(new Dimension(750,750)); 
    panelMain.setBackground(Color.BLACK); 
    panelMain.setLayout (new FlowLayout()); 
    window.add(panelMain); 
    PanelTop(); 
    PanelButtons(); 
    PanelIcon(); 
} 

@Override 
public void actionPerformed(ActionEvent event) { 
    Object eventSource = event.getSource(); 

    if (eventSource == buttonStart) { 
     panelMain.removeAll(); 
     TurnBase TB = new TurnBase(); 
     TB.CreateTurnBase(); 
    } 
} 

其他類看起來是這樣的:

public void CreateTurnBase() { 
    panelMain=new JPanel(); 
    panelTurnBase =new JPanel(); 
    setLayout(new FlowLayout()); 
    setPreferredSize(new Dimension(750,750)); 
    setBackground(Color.BLUE); 
    panelTurnBase.setLayout (new FlowLayout()); 
    panelMain.add(panelTurnBase); 
    System.out.println("1"); 
    PanelTurnBaseTop(); 
    PanelGameScreen(); 
    PanelTurnBaseBottom(); 
    repaint(); 
    revalidate(); 
    buttonAttack = new JButton("Attack"); 
    buttonAttack.addActionListener(this); 
    panelTurnBase.add(buttonAttack); 
    System.out.println("2"); 
} 
+0

CreateTurnBase是一種方法不是一類? –

+1

1)爲了更快地獲得更好的幫助,請發佈[MCVE](http://stackoverflow.com/help/mcve)(最小完整可驗證示例)或[SSCCE](http://www.sscce.org/)(Short ,獨立,正確的例子)。 2)總是複製/粘貼錯誤和異常輸出! 3)使用合乎邏輯的一致形式縮進代碼行和塊。縮進旨在使代碼的流程更易於遵循! –

回答

1

面板是有原因的「只是一個黑色的屏幕」,是因爲你不添加任何東西它,而你告訴它有一個黑色的屏幕。

panel.setBackground(Color.BLACK);

你從來沒有真正做任何事情到第一板的任何這些方法,我可以假設根據您的第二個「類」表示內部(這是一個方法)。因此爲什麼它保持黑色。

你說:

panelMain=new JPanel(); 
panelTurnBase =new JPanel(); 

您正在創建新的JPanel小號每次和只調用它們的panelMain,他們只是坐在那個方法裏面,從來沒有離開過。您或者需要返回JPanel或給它一個JPanel作爲參數。

該程序正在做你正在告訴它做的事情。

另外,不要比較對象是這樣的:

eventSource == buttonStart

你應該使用:

eventSource.equals(buttonStart);

相關問題