所以我面对的情况是我被困了一个小时。
这是我的情况:我想添加一张图片,上面写着“Life:”与我的游戏画布分开,非常像NES的游戏塞尔达传说。
问题是:我的代码仍然只显示我的游戏画布。
public class Game extends Canvas {
private Game(){
JFrame container = new JFrame("Arcade Shooter Clone");
panel = (JPanel)container.getContentPane();
panel.setLayout(new BorderLayout());
panel.add(this,BorderLayout.CENTER);
ShipLifeTitle shipLifeTitle = new ShipLifeTitle();
panel.add(shipLifeTitle,BorderLayout.SOUTH);
}
}
public class ShipLifeTitle extends Sprite {
private Image image;
public ShipLifeTitle()
{
try
{
image = ImageIO.read(new File("src/Ship/shipLifeTitle.PNG"));
}
catch(IOException e)
{
e.printStackTrace();
}
}
@Override
public void draw(Graphics g) {
// TODO Auto-generated method stub
g.drawImage(image, 200, 200, null);
}
}
public class Sprite extends Component implements GameComponent {
public Vector2D position;
public Vector2D velocity;
@Override
public void update(long milliseconds) {
// TODO Auto-generated method stub
}
@Override
public void draw(Graphics g) {
// TODO Auto-generated method stub
}
}
答案 0 :(得分:1)
在ShipLifeTitle
面板中,您需要覆盖其getPreferredSize
方法。
public class ShipLifeTitle extends Sprite {
//...
public Dimension getPreferredSize() {
return new Dimension(image.getWidth(null), image.getHeight(null));
}
}
这将为BorderLayout
提供一些关于您希望如何配置面板的提示