如何在Java中从游戏画布添加单独的图像

时间:2013-02-09 01:25:52

标签: java image canvas interface

所以我面对的情况是我被困了一个小时。

这是我的情况:我想添加一张图片,上面写着“Life:”与我的游戏画布分开,非常像NES的游戏塞尔达传说。

Example

问题是:我的代码仍然只显示我的游戏画布。

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

        }



    }

1 个答案:

答案 0 :(得分:1)

ShipLifeTitle面板中,您需要覆盖其getPreferredSize方法。

public class ShipLifeTitle extends Sprite {
    //...
    public Dimension getPreferredSize() {
        return new Dimension(image.getWidth(null), image.getHeight(null));
    }
}

这将为BorderLayout提供一些关于您希望如何配置面板的提示