我想用一张图片作为一个Frame的背景图片,部分代码如下:
try {
  image = ImageIO.read(new File("D:/My Documents/Java/MyGame/bg.jpg"));
 } catch (IOException e1) {
// // TODO Auto-generated catch block
   e1.printStackTrace();
 }

解决方案 »

  1.   

    public class MyGame {
    public static void main(String [] args){
     new GameFrame();
    }
    }

    class GameFrame {
    Frame f;
    BufferedImage image = null ;
    GameFrame(){
    f = new Frame("Five Chess");
    f.setVisible(true);
    f.setSize(800,570);
    // f.setResizable(false);
    f.setLocation(300, 100);
    f.addMouseListener(new Mouse());

    f.addWindowListener(new WindowAdapter() {
    public void windowClosing(WindowEvent e){
    System.exit(0);
    }
    });
    try {
    image = ImageIO.read(new File("D:/My Documents/Java/MyGame/bg.jpg"));
    System.out.println("ssssss");
    } catch (IOException e1) {
    // // TODO Auto-generated catch block
    e1.printStackTrace();
    }
      }
    public void paint(Graphics g){
    // System.out.println("ssssss");
    g.drawImage(image, 0, 0, f);
    g.drawString("aa", 100, 100);
    }

    }
    所有代码,程序运行没错!!
      

  2.   

    在你的
    image = ImageIO.read(new File("D:/My Documents/Java/MyGame/bg.jpg"));
    后增加:
    paint(f.getGraphics());
      

  3.   

    很显然,你自己写的paint函数是属于GameFrame这个类的,只不过这个类里面你有一个Frame f,但是,f在显示的时候,和你写的这个paint一点用也没有.你必须自己调用这个paint,而且调用时,你的目的是向f窗口的区域中绘制,所以需要传递f的Graphics成员,这样paint函数才能画进f上
      

  4.   

    //下面也是可以的
    import java.awt.Frame;
    import java.awt.Graphics;
    import java.awt.event.WindowAdapter;
    import java.awt.event.WindowEvent;
    import java.awt.image.BufferedImage;
    import java.io.File;
    import java.io.IOException;
    import javax.imageio.ImageIO;public class MyGame {    public static void main(String[] args) {
            new GameFrame();
        }
    }class GameFrame {    Frame f;
        BufferedImage image = null;    GameFrame() {
            f = new Frame("Five Chess"){
                public void paint(Graphics g) {
                // System.out.println("ssssss");
                    if(image!=null)
                        g.drawImage(image, 0, 0, f);
                    g.drawString("aa", 100, 100);
                }
            };
            
            f.setSize(800, 570);
            // f.setResizable(false);
            f.setLocation(300, 100);
            //f.addMouseListener(new Mouse());        f.addWindowListener(new WindowAdapter() {            public void windowClosing(WindowEvent e) {
                    System.exit(0);
                }
            });
            try {
                image = ImageIO.read(new File("未命名.jpg"));
                System.out.println("ssssss");
            } catch (IOException e1) {
            // // TODO Auto-generated catch block
                e1.printStackTrace();
            }
            f.setVisible(true);
        }}
      

  5.   

    你只是读了出来,应该还要在屏幕里面画出来吧,要调用paint方法~
      

  6.   

    多谢各位大侠的帮忙。图片已经可以显示出来了,但是我不能repaint()重新调用这个方法,一调用窗口就和昨天一样,什么都没了。我的代码如下:重写后的paint方法:
    public void paint(Graphics g){    //绘制方法
    g.drawImage(image, 0, 0, f);   //背景
    for(int i = 0;i<=20;i++){
    g.drawLine(140, 25+i*25, 660, 25+i*25);  //X轴
    }
    for(int i = 0;i<=20;i++){
    g.drawLine(140+i*26, 50, 140+i*26,520);  //Y轴
    }
    g.setFont(new Font("黑体",Font.BOLD,30));  //设置字体
    g.drawString("驰骋沙场",348,48);
    g.fillOval(398,248,6,6);  //标注点
    g.fillOval(x, y, 10, 10);
      }
    通过鼠标按下重新调用这个方法:
    public void mousePressed(MouseEvent e){
     x = e.getX();
     y = e.getY();
     f.repaint();
     System.out.println(x);
    }
    结果:当我一按下鼠标的时候f就是一片空白,什么都没有了,但是我测试的那个x轴坐标可以输出,证明鼠标监听没有错。
    急啊,求各位大侠继续解惑!!!!