package org.liky.game.Frame;import java.awt.Graphics;
import java.awt.Toolkit;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.awt.Color;import javax.imageio.ImageIO; 
import javax.swing.JFrame;
import javax.swing.JOptionPane;public class MyChessFrame extends JFrame  implements MouseListener{
public MyChessFrame() {
JFrame jf = new JFrame();
this.setTitle("标题");
this.setSize(1024,768);
this.setResizable(true);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
int width =Toolkit.getDefaultToolkit().getScreenSize().width;
int height =Toolkit.getDefaultToolkit().getScreenSize().height;
this.setLocation((width-200)/2, (height-100)/2);
this.addMouseListener(this);
this.setVisible(true);

}

public void paint(Graphics g) {
BufferedImage image=null;
try {
image = ImageIO.read(new File("E:/image/background.jpg"));
} catch (IOException e) {
e.printStackTrace();
}
 
g.drawImage(image,0,0,this);
}

public void mouseClicked(MouseEvent e) {} public void mouseEntered(MouseEvent e) {} public void mouseExited(MouseEvent e) {} public void mousePressed(MouseEvent e) {} public void mouseReleased(MouseEvent e) {}
}测试类Text.java
package org.liky.game.test;
import javax.swing.JOptionPane;import org.liky.game.Frame.MyChessFrame;
public class Text {
public static void main(String[] args) {
MyChessFrame mf = new MyChessFrame();

}  
}这个程序在MyChessFrame类中,将衣服图作为背景,我用的类中
public void paint(Graphics g) {
BufferedImage image=null;
try {
image = ImageIO.read(new File("E:/image/background.jpg"));
} catch (IOException e) {
e.printStackTrace();
}
 
g.drawImage(image,0,0,this);
}
方法中,但是背景图显示的不完整;这是怎么回事?请各位高手指教.

解决方案 »

  1.   

    是不是你选的图片比你程序的显示范围大啊
    java里边是不是也有几种显示模式啊,就像桌面背景的拉伸或者平铺一样?
      

  2.   

    一定是你选的图片超出你程序的显示区域了,在设置框架、面板或是按钮的背景时,就好设置一下背景图片的大小,即让它填满整个组件。在这个public void paint(Graphics g)方法画图片的画笔中添加框架的大小:g.drawImage(image,0,0,mf.getWidth(),mf.getHeight(),this); ,这样就可以啦。