java中的Paint(Graphics g)用画笔画出来的图不能完全显示在JFrame中?

时间:2023-02-04 20:31:16
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);
}
方法中,但是背景图显示的不完整;这是怎么回事?请各位高手指教.

3 个解决方案

#1


"一幅图",不是"衣服图"不好意思,写错了。

#2


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

#3


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

#1


"一幅图",不是"衣服图"不好意思,写错了。

#2


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

#3


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