java中image显示图片,随上下左右键移动

 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 }

 

你可能感兴趣的:(image)