[英]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.