1 import java.awt.*; 2 import java.awt.event.*; 3 4 class FTest { 5 public static void main(String[] args){ 6 final MyFrame form = new MyFrame(); 7 // form.setBounds(100, 100, 500, 500); 8 9 form.setMyFullScreen(); 10 form.addWindowListener(new Wclose()); 11 form.addKeyListener(new KeyAdapter(){ 12 public void keyPressed(KeyEvent e){ 13 14 form.w=form.getWidth();//获取当前窗口的大小 15 form.h=form.getHeight(); 16 if(e.getKeyCode()==KeyEvent.VK_DOWN){ 17 if(form.p.y < form.h-form.imH){ 18 form.repaint(form.p.x,form.p.y,form.imW, form.StepLength); 19 form.p.y=form.p.y+form.StepLength; 20 21 } 22 } 23 else if(e.getKeyCode()==KeyEvent.VK_UP){ 24 if(form.p.y>form.getX()){ 25 form.repaint(form.p.x,form.p.y+form.imH-form.StepLength,form.imW, form.StepLength); 26 form.p.y-=form.StepLength; 27 } 28 } 29 else if(e.getKeyCode()==KeyEvent.VK_LEFT){ 30 if(form.p.x>form.getY()){ 31 form.repaint(form.p.x+form.imW-form.StepLength,form.p.y,form.StepLength, form.imH); 32 form.p.x-=form.StepLength; 33 } 34 } 35 else if(e.getKeyCode()==KeyEvent.VK_RIGHT){ 36 if(form.p.x<form.w-form.imW){ 37 form.repaint(form.p.x,form.p.y,form.StepLength, form.imH); 38 form.p.x+=form.StepLength; 39 } 40 } 41 form.paint(form.getGraphics());//重绘,调用的是重写的paint 42 } 43 }); 44 form.setVisible(true); 45 } 46 } 47 48 class MyFrame extends Frame { 49 Image mImages;//定义了两张图片对象 50 Image mImages2; 51 int StepLength=10; 52 int imH=100;//图像的大小 53 int imW=100; 54 int h=300;//当前的窗口的大小 55 int w=400; 56 Point p=new Point(20,20);//用来记录图像左上方定点的位置 57 // Point pF=new Point(0,0); 58 MyFrame(){ 59 setSize(h,w); 60 61 mImages = getToolkit().getImage("ap1.jpg");//创建图片对象 62 mImages2 = getToolkit().getImage("ap2.jpg"); 63 64 //java加载图象是异步的。也就是说,在你执行到getwidth时,它还不一定读完图象。所以当然是-1了。 65 //可以用下面的程序等待加载 66 MediaTracker media = new MediaTracker(this); 67 media.addImage(mImages2,1); 68 try{media.waitForID(1);} 69 catch(InterruptedException e){ 70 } 71 //如果没有上面这段程序,imH,和imW就会是-1 72 imH=mImages2.getHeight(null); 73 imW=mImages2.getWidth(null); 74 } 75 public void paint(Graphics g){ 76 g.drawImage(mImages2,p.x,p.y,imW,imH,this); 77 } 78 79 public void setMyFullScreen(){ 80 //把当前frame设置成全屏 81 Dimension screenSize=this.getToolkit().getScreenSize(); 82 this.setSize(screenSize.width,screenSize.height); 83 this.setUndecorated(true); 84 this.setExtendedState(Frame.MAXIMIZED_BOTH); 85 } 86 } 87 88 class Wclose extends WindowAdapter { 89 public void windowClosing(WindowEvent e) { 90 System.exit(0); 91 } 92 }