所以我正在开发一个结合使用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);
}
}