0

所以我正在开发一个结合使用swing组件和Graphics2D的Java游戏。

我有一个 AbstractLevelView 类,其中包含游戏的所有元素。这个 LevelView 组件使用一个 BorderLayout 在左侧显示一个上下文栏,并在中间使用一个包含游戏网格的 JPanel。

我的上下文栏和 gridPanel 都可以正常工作,但我想做的是将“消息”直接绘制到 AbstractLevelView,但我无法让任何绘制工作。这大概是因为嵌套组件导致无处可绘。

我已经包含了我的 AbstractLevelView 的一个缩写版本,以及一个测试 paintComponent 方法。我试过使用paintComponents,但它甚至没有被调用。

有谁知道我可以做什么,以便我可以在嵌套组件上进行绘制?

public abstract class AbstractLevelView extends AbstractGameView {

    private JPanel gridPanel;
    private ContextBar contextBar;

    public AbstractLevelView(){

        gridPanel = new JPanel();
        add(gridPanel, BorderLayout.CENTER);

        contextBar = new ContextBar();
        add(contextBar, BorderLayout.WEST);
    }

    @Override
public void paintComponent(Graphics g){
    System.out.println("foo");
    Image img = ImageManager.getImage("img.jpg");
    g.drawImage(img, 0, 0, 300, 300, this);
}
}
4

1 回答 1

0

感谢 MadProgrammer 建议 JLayeredPanes。我曾尝试在游戏的早期阶段使用它们,但现在我对它们有了更多的了解,我已经成功地实施了一个解决方案。

在此处输入图像描述

于 2013-10-21T00:32:01.750 回答