将JPanel添加到另一个类中的另一个JPanel

时间:2015-05-18 16:01:21

标签: java swing class jpanel

我正在尝试将JPanel添加到另一个类的另一个JPanel中。程序不再抛出错误并且所有方法都已运行,但新面板只有一个黑屏。该程序的基本版本如下:

xxxx@gmail.com

另一个类看起来像这样:

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();
    }
}

1 个答案:

答案 0 :(得分:1)

面板的原因是"只是黑屏"是因为你没有添加任何内容,而且告诉它有黑屏。

panel.setBackground(Color.BLACK);

你从来没有对任何这些方法中的第一个面板做任何事情,我可以根据你对第二个"类"的表示来假设。 (这是一种方法)。因此,为什么它会保持黑色。

你说:

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

您每次都要创建新的JPanel,并且只需将它们称为panelMain,他们只是坐在那个方法中,永远不会离开。您需要返回JPanel或将JPanel作为参数。

该计划完全按照你的要求去做。

另外,比较像这样的对象:

eventSource == buttonStart

您应该使用:

eventSource.equals(buttonStart);