2015-05-18 164 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);

相关问题