簡體   English   中英

將JPanel添加到其他類中的另一個JPanel

[英]Adding JPanel to another JPanel in a different class

我試圖將一個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");   
}

面板具有“僅黑屏”的原因是因為您沒有向面板添加任何內容,而是告訴它具有黑屏。

panel.setBackground(Color.BLACK);

您實際上從未對任何這些方法的第一個面板執行任何操作,我可以根據您對第二個“類”的表示(這是一個方法)來假設。 因此,為什么它保持黑色。

你說:

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

您每次都在創建新的JPanel ,只需將它們panelMain ,它們就位於該方法內部,永不離開。 您需要返回一個JPanel或給它一個JPanel作為參數。

該程序完全按照您的指示執行。

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

eventSource == buttonStart

您應該使用:

eventSource.equals(buttonStart);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM