java - 在嵌套组件上绘制

时间:2013-10-20 22:15:27

标签: java swing graphics2d

所以我正在使用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);
}
}

1 个答案:

答案 0 :(得分:0)

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

enter image description here