Java游戏中背景图像未显示在JLabel/JFrame中
我正在制作一个java游戏,它的核心是一个JFrame,其中包含一个JLabel,用于保存背景图像。在项目的早期,这是被展示的。然而,在我实现了一个游戏渲染方法,将healthbars和一个角色放在屏幕上之后,背景图像就不再显示了。下面是游戏的render()和main()方法 如果我先放置player.render(g),那么player和health栏都会出现在屏幕上。但是,如果我将healthBars.render(g)放在player.render(g)之前,则该播放器不会出现。这真的让我很困惑,因为我希望呈现第二个的会导致第一个隐藏在后面,但情况正好相反。有人能给我指出正确的方向吗?Java游戏中背景图像未显示在JLabel/JFrame中,java,swing,Java,Swing,我正在制作一个java游戏,它的核心是一个JFrame,其中包含一个JLabel,用于保存背景图像。在项目的早期,这是被展示的。然而,在我实现了一个游戏渲染方法,将healthbars和一个角色放在屏幕上之后,背景图像就不再显示了。下面是游戏的render()和main()方法 如果我先放置player.render(g),那么player和health栏都会出现在屏幕上。但是,如果我将healthBars.render(g)放在player.render(g)之前,则该播放器不会出现。这真的让
与BufferStrategy
不配合,因为您控制了绘制过程Swing
不能是透明的,因此它将隐藏其下方的任何内容Canvas
- 当您使用
时,您正在替换曾经位于frame.add(游戏)
BorderLayout.CENTER的内容
渲染过程中绘制背景图像
public void render() {
BufferStrategy bs = this.getBufferStrategy();
if(bs == null)
{
createBufferStrategy(3); //Use 5 at most
return;
}
Graphics g = bs.getDrawGraphics();
//RENDER HERE
// Paint background here...
player.render(g);
healthBars.render(g);
//END RENDER
g.dispose();
bs.show();
}
BufferStrategy
与Swing
不配合,因为您控制了绘制过程
Canvas
不能是透明的,因此它将隐藏其下方的任何内容
- 当您使用
frame.add(游戏)
时,您正在替换曾经位于BorderLayout.CENTER的内容
不要混合使用轻量级(Swing)和重量级(AWT)组件,而是在渲染过程中绘制背景图像
public void render() {
BufferStrategy bs = this.getBufferStrategy();
if(bs == null)
{
createBufferStrategy(3); //Use 5 at most
return;
}
Graphics g = bs.getDrawGraphics();
//RENDER HERE
// Paint background here...
player.render(g);
healthBars.render(g);
//END RENDER
g.dispose();
bs.show();
}
BufferStrategy
与Swing
不配合,因为您控制了绘制过程
Canvas
不能是透明的,因此它将隐藏其下方的任何内容
- 当您使用
frame.add(游戏)
时,您正在替换曾经位于BorderLayout.CENTER的内容
不要混合使用轻量级(Swing)和重量级(AWT)组件,而是在渲染过程中绘制背景图像
public void render() {
BufferStrategy bs = this.getBufferStrategy();
if(bs == null)
{
createBufferStrategy(3); //Use 5 at most
return;
}
Graphics g = bs.getDrawGraphics();
//RENDER HERE
// Paint background here...
player.render(g);
healthBars.render(g);
//END RENDER
g.dispose();
bs.show();
}
BufferStrategy
与Swing
不配合,因为您控制了绘制过程
Canvas
不能是透明的,因此它将隐藏其下方的任何内容
- 当您使用
frame.add(游戏)
时,您正在替换曾经位于BorderLayout.CENTER的内容
不要混合使用轻量级(Swing)和重量级(AWT)组件,而是在渲染过程中绘制背景图像
public void render() {
BufferStrategy bs = this.getBufferStrategy();
if(bs == null)
{
createBufferStrategy(3); //Use 5 at most
return;
}
Graphics g = bs.getDrawGraphics();
//RENDER HERE
// Paint background here...
player.render(g);
healthBars.render(g);
//END RENDER
g.dispose();
bs.show();
}
有道理。我会试着在半小时内把它修好,然后让你知道它是怎么回事。我会试着在半小时内把它修好,然后让你知道它是怎么回事。我会试着在半小时内把它修好,然后让你知道它是怎么回事。我会试着在半小时内把它修好,然后告诉你情况如何。