【问题标题】:Drawing from multiple classes to the main class in Java从多个类绘制到Java中的主类
【发布时间】:2012-03-16 12:20:15
【问题描述】:

我正在尝试创建一个简单的游戏,但是在从主类中的多个类中绘图时遇到了麻烦。到目前为止,这是我的代码。

public static void main(String[] args) 
{
    JFrame mainGameFrame = new JFrame("Space4X");

    StarsPanel starsPanel = new StarsPanel();
    HomePlanet homePlanet = new HomePlanet();

    mainGameFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    mainGameFrame.setResizable(true);

    mainGameFrame.getContentPane().add(homePlanet);
    mainGameFrame.getContentPane().add(starsPanel);


    mainGameFrame.pack();
    mainGameFrame.setVisible(true);

}

public void HomePlanet()
{
  HomePlanet homePlanet = new HomePlanet();

}

}

这是我的 HomePlanet 课程,

package space4x;

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

public class HomePlanet extends JPanel 
{


public void HomePlanet()
{

}


public void paintComponent (Graphics page)
{   
    //Draw planet
    super.paintComponent (page);
    page.setColor(Color.RED);
    page.fillRect(10,10,50,50);

}


}

我还有一个名为 StarsPanel 的类,它可以在随机位置绘制星星并且效果很好,但 HomePlanet 出于某种原因不会。

在mainclass下,如果我有

mainGameFrame.getContentPane().add(starsPanel);

首先,它会绘制 HomePlanet 类下的内容,而不是 StarPanel 类下的内容。

这让我发疯了,为什么我可以让一个工作而不是另一个。

请帮忙。

【问题讨论】:

  • 是的,我知道我需要一些类似于 homePlanet.paintComponent(page); 的东西。但它不喜欢页面部分。
  • @khachik:是的,它会编译。只是您将拥有一个具有类名称的方法,而不是具有构造函数。

标签: java swing jpanel layout-manager paintcomponent


【解决方案1】:

内容窗格默认使用 BorderLayout。将面板添加到内容窗格时,会将其添加到 BorderLayout 的中心。因此,当您添加第二个面板时,它会替换布局中心的第一个面板。

如果您希望将两个面板一个在另一个上绘制,那么您没有合适的策略。创建一个面板,它结合了您目前拥有的两个面板的绘画。

【讨论】:

  • 所以类似于 mainGameFrame.getContentPane().add(starsPanel, homePlanet); ?
  • 或者,创建一个缓冲图像并将其设置为标签的图标。绘制到图像。没有什么需要扩展(也没有人需要被钉在任何东西上)。
  • 没有。类似于 mainGameFrame.getContentPane().add(starsWithHomePlanetPanel)
  • “类似于 mainGameFrame.getContentPane().add(starsPanel, homePlanet); 的东西?” 类似于 a) 尝试或 b) RTFM 的东西!
  • 不用客气,我试过了,还是不行,JB的建议不行。
猜你喜欢
  • 2015-12-25
  • 2014-03-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-05-30
  • 1970-01-01
  • 2021-11-15
  • 1970-01-01
相关资源
最近更新 更多