我想用一张图片作为一个Frame的背景图片,部分代码如下:
try {
image = ImageIO.read(new File("D:/My Documents/Java/MyGame/bg.jpg"));
} catch (IOException e1) {
// // TODO Auto-generated catch block
e1.printStackTrace();
}
try {
image = ImageIO.read(new File("D:/My Documents/Java/MyGame/bg.jpg"));
} catch (IOException e1) {
// // TODO Auto-generated catch block
e1.printStackTrace();
}
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);
}
}
所有代码,程序运行没错!!
image = ImageIO.read(new File("D:/My Documents/Java/MyGame/bg.jpg"));
后增加:
paint(f.getGraphics());
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);
}}
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轴坐标可以输出,证明鼠标监听没有错。
急啊,求各位大侠继续解惑!!!!