0
所以我正在使用swing组件和Graphics2D的Java游戏。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);
}
}
由于您的问题涉及到一个GUI描绘,我建议1)发布的[SSCCE(http://sscce.org),而不是一个代码片段,我们不能编译也不运行,2 )发布你得到的图片和你想要的图片。 –
或者使用类似'JLayeredPane'的东西来层叠彼此顶部的组件或框架玻璃窗格...... – MadProgrammer
也可以考虑使用JLayer作为“装饰”您的JPanel的一种方式。我以前用过这个图形来达到很好的效果。 –