所以我正在使用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);
}
}
答案 0 :(得分:0)
感谢MadProgrammer,建议使用JLayeredPanes。我曾试图在游戏的早期阶段使用它们,但现在我对它们了解得更多,我已成功实施了解决方案。