Java2实用教程(第二版)程序代码——第十八章 Java中的鼠标事件和键盘事件

  1//例子1
  2import java.applet.*;import java.awt.*
  3import java.awt.event.*;
  4public class Example18_1 extends Applet implements MouseListener
  5{  TextField text;
  6   public void init()
  7   {  text=new TextField(40); add(text);
  8      addMouseListener(this) ;//向小程序增加鼠标事件监视器。
  9   }
   
 10   public void mousePressed(MouseEvent e)
 11   {  text.setText("鼠标键按下了,位置是"+e.getX()+","+e.getY() );
 12   }
 
 13   public void mouseReleased(MouseEvent e)
 14   {  text.setText(" 鼠标松开了,位置是"+e.getX()+","+e.getY() );
 15   }

 16   public void mouseEntered(MouseEvent e)
 17   {  text.setText(" 鼠标进来了,位置是"+e.getX()+","+e.getY() );
 18   }

 19   public void mouseExited(MouseEvent e)
 20   {  text.setText(" 鼠标走开了");
 21   }

 22   public void mouseClicked(MouseEvent e)
 23   {  if(e.getClickCount()==2)
 24       {  text.setText("鼠标键双击,位置:"+e.getX()+","+e.getY());
 25       }
  
 26      else {}
 27   }

 28}

 29
 30//例子2
 31import java.awt.*;import java.awt.event.*;
 32class MyCanvas extends Canvas implements MouseListener
 33{  int left=-1,right=-1//记录左、右键用的变量。 
 34   int x=-1,y=-1;        //记录鼠标位置用的变量。
 35   MyCanvas()
 36   {  setSize(100,100);
 37      setBackground(Color.cyan) ;
 38      addMouseListener(this);
 39    }
   
 40   public void paint(Graphics g)
 41   {  if(left==1)
 42       {  g.drawOval(x-10,y-10,20,20);
 43       }

 44     else if(right==1)
 45       {  g.drawRect(x-8,y-8,16,16);
 46       }

 47   }
 
 48   public void mousePressed(MouseEvent e)
 49   {  x=e.getX(); y=e.getY();
 50      if(e.getModifiers()==InputEvent.BUTTON1_MASK)
 51        {  left=1;right=-1;
 52           repaint();
 53        }

 54      else if(e.getModifiers()==InputEvent.BUTTON3_MASK)
 55       {  right=1; left=-1;
 56          repaint();
 57        }

 58   }
 
 59   public void mouseReleased(MouseEvent e){}
 60   public void mouseEntered(MouseEvent e){}
 61   public void mouseExited(MouseEvent e)
 62   {  left=-1;right=-1;
 63      repaint();
 64   }

 65   public void mouseClicked(MouseEvent e){}
 66   public void update(Graphics g)
 67   {  if(left==1||right==1)
 68        { paint(g);
 69        }

 70      else
 71        { super.update(g);
 72        }

 73   }

 74}

 75public class Example18_2 
 76{  public static void main(String args[])
 77   {  Frame f=new Frame();
 78      f.setBounds(100,100,200,200);f.setVisible(true);
 79      f.addWindowListener(new WindowAdapter()  //适配器
 80                  {public void windowClosing(WindowEvent e)
 81                    {System.exit(0);
 82                    }

 83                  }
);
 84      f.add(new MyCanvas(),BorderLayout.CENTER);//添加画布。
 85      f.validate();    
 86   }

 87}

 88
 89//例子3
 90import java.awt.*;import java.awt.event.*;
 91import java.applet.*;
 92public class Example18_3 extends Applet implements MouseListener 
 93{  TextField text; Button button;
 94   TextArea textArea; 
 95   public void init() 
 96   {  text=new TextField(10); text.addMouseListener(this);
 97      button=new Button("按钮"); button.addMouseListener(this);
 98      addMouseListener(this);
 99      textArea=new TextArea(8,28);
100      add(button);add(text);add(textArea);
101   }

102   public void mousePressed(MouseEvent e)
103   {  if(e.getSource()==button)
104      {textArea.append("\n在按钮上鼠标按下,位置:"+"("+e.getX()+","+e.getY()+")");
105      }

106     else if(e.getSource()==text)
107      {textArea.append("\n在文本框上鼠标按下,位置:"+"("+e.getX()+","+e.getY()+")");
108      }

109    else if(e.getSource()==this)
110     {textArea.append("\n在容器上鼠标按下,位置:"+"("+e.getX()+","+e.getY()+")");
111     }
 
112   }

113   public void mouseReleased(MouseEvent e) {}
114   public void mouseEntered(MouseEvent e)  {}
115   public void mouseExited(MouseEvent e) {}
116   public void mouseClicked(MouseEvent e) 
117   {  if(e.getClickCount()>=2)
118      textArea.setText("鼠标连击,位置:"+"("+e.getX()+","+e.getY()+")");
119   }

120}

121
122//例子4 
123import java.applet.*;import java.awt.*;import java.awt.event.*;
124public class Example18_4 extends Applet implements MouseMotionListener
125{  int x=-1,y=-1;
126   public void init()
127   {  setBackground(Color.green);
128      addMouseMotionListener(this); 
129   }

130   public void paint(Graphics g)
131   {  if(x!=-1&&y!=-1)
132       {  g.setColor(Color.red);
133          g.drawLine(x,y,x,y);
134       }

135   }

136   public void mouseDragged(MouseEvent e)
137   {  x=(int)e.getX();y=(int)e.getY();
138      repaint();
139    }

140   public void mouseMoved(MouseEvent e){} 
141   public void update(Graphics g)
142   {  paint(g);
143   }
 
144}

145
146//例子5 
147import java.applet.*;import java.awt.*;
148import java.awt.event.*;
149public class Example18_5 extends Applet
150implements ActionListener,MouseMotionListener
151{  int x=-1,y=-1,橡皮擦通知=0,清除通知=0;
152   Color c=new Color(255,0,0);int con=3;
153   Button b_red,b_blue,b_green,
154   清除,b_quit;
155   public void init()
156   {  addMouseMotionListener(this); 
157      b_red=new Button("画红色图形");    
158      b_blue=new Button("兰色图形"); 
159      b_green=new Button("画绿色图形");  
160      b_quit=new Button("橡皮");
161      清除=new Button("清除");
162      add(b_red); add(b_green); add(b_blue); add(b_quit);add(清除);
163      b_red.addActionListener(this); b_green.addActionListener(this);
164      b_blue.addActionListener(this); b_quit.addActionListener(this);
165      清除.addActionListener(this);
166   }

167   public void paint(Graphics g)
168   {  if(x!=-1&&y!=-1&&橡皮擦通知==0&&清除通知==0)
169         {  g.setColor(c); g.fillOval(x,y,con,con);
170         }

171       else if(橡皮擦通知==1&&清除通知==0)
172        {  g.clearRect(x,y,10,10);
173        }

174       else if(清除通知==1&&橡皮擦通知==0)
175        {  g.clearRect(0,0,getSize().width,getSize().height);
176        }

177   }

178   public void mouseDragged(MouseEvent e)
179   {  x=(int)e.getX();y=(int)e.getY(); repaint();
180   }

181    public void mouseMoved(MouseEvent e){ } 
182   public void update(Graphics g)
183   {  paint(g);
184   }
 
185   public void actionPerformed(ActionEvent e)
186   {  if(e.getSource()==b_red)
187        {  橡皮擦通知=0;清除通知=0; c=new Color(255,0,0);
188        }

189      else if(e.getSource()==b_green)
190        {  橡皮擦通知=0;清除通知=0;  c=new Color(0,255,0);
191        }

192      else if(e.getSource()==b_blue)
193        {  橡皮擦通知=0;清除通知=0; c=new Color(0,0,255);
194        }

195      if(e.getSource()==b_quit)
196       {   橡皮擦通知=1;清除通知=0 ;
197       }

198      if(e.getSource()==清除)
199       {   清除通知=1; 橡皮擦通知=0;repaint();
200       }

201   }

202}

203
204//例子6
205import java.awt.*;import java.awt.event.*;import java.applet.*
206import javax.swing.SwingUtilities;
207public class Example18_6 extends Frame implements MouseListener,MouseMotionListener
208{  Button button;
209   int x,y;
210   boolean move=false;
211   Example18_6()
212   {  button=new Button("按钮"); 
213      button.addMouseListener(this);
214      button.addMouseMotionListener(this);
215      addMouseMotionListener(this);
216      setLayout(new FlowLayout());
217      add(button);
218      addWindowListener(new WindowAdapter()
219              {   public void windowClosing(WindowEvent e)
220                  { System.exit(0);
221                  }

222              }
);
223      setBounds(10,10,200,180);
224      setVisible(true); validate();
225   }

226   public void mousePressed(MouseEvent e) {}
227   public void mouseReleased(MouseEvent e)
228   {  move=false;
229   }

230   public void mouseEntered(MouseEvent e)  {}
231   public void mouseExited(MouseEvent e) {}
232   public void mouseClicked(MouseEvent e){}
233   public void mouseMoved(MouseEvent e){} 
234   public void mouseDragged(MouseEvent e)
235   {  Button b=null;
236      if(e.getSource() instanceof Button) //在按钮上拖动鼠标导致按钮上发生鼠标事件。
237         { b=(Button)e.getSource();   
238           move=true
239          //将鼠标拖动事件转移到棋盘,导致棋盘上发生鼠标拖动事件:
240          e=SwingUtilities.convertMouseEvent(button,e,this);
241          //并将从按钮转移得到的鼠标事件e传递给mouseDragged方法的参数。
242         }

243      if(e.getSource()==this)
244         {  if(move&&b!=null)
245              {  x=e.getX(); y=e.getY();
246                 int w=b.getSize().width,h=b.getSize().height;
247                  b.setLocation(x-w/2,y-h/2);
248               }

249           }

250   }

251   public static void main(String args[])
252   {  new Example18_6();
253   }

254}

255
256//例子7
257import java.applet.*;import java.awt.*;
258import java.awt.event.*;
259public class Example18_7 extends Applet implements
260KeyListener
261{  Button b[]=new Button[10];
262   int x,y;
263   public void init()
264   {  for(int i=0;i<=9;i++
265         {  b[i]=new Button(""+i);
266            b[i].addKeyListener(this);
267            add(b[i]);
268         }

269   }

270   public void keyPressed(KeyEvent e)
271   {  Button button=(Button)e.getSource();
272      x=button.getBounds().x;
273      y=button.getBounds().y;
274      if(e.getKeyCode()==KeyEvent.VK_UP)
275        {  y=y-2;
276           if(y<=0) y=0;
277           button.setLocation(x,y);
278        }

279      else if(e.getKeyCode()==KeyEvent.VK_DOWN)
280       {  y=y+2;
281          if(y>=300) y=300
282          button.setLocation(x,y);
283       }

284      else if(e.getKeyCode()==KeyEvent.VK_LEFT)
285       {  x=x-2;
286          if(x<=0) x=0;
287          button.setLocation(x,y);
288       }
 
289      else if(e.getKeyCode()==KeyEvent.VK_RIGHT)
290       {  x=x+2;
291          if(x>=300) x=300;
292          button.setLocation(x,y);
293       }

294   }

295   public void keyTyped(KeyEvent e) {}
296   public void keyReleased(KeyEvent e) {}
297}

298
299//例子8
300import java.awt.*;import java.awt.event.*;
301//创建棋盘的类:
302class ChessPad extends Panel  implements MouseListener,ActionListener
303{  int x=-1,y=-1, 棋子颜色=1;               //控制棋子颜色的成员变量。
304   Button button=new Button("重新开局");    //控制重新开局的按扭。
305   TextField text_1=new TextField("请黑棋下子"),
306             text_2=new TextField();              //提示下棋的两个文本框。
307   ChessPad()
308   {  setSize(440,440);
309      setLayout(null);setBackground(Color.pink);
310      addMouseListener(this);add(button);button.setBounds(10,5,60,26);
311      button.addActionListener(this);
312      add(text_1);text_1.setBounds(90,5,90,24);
313      add(text_2);text_2.setBounds(290,5,90,24);
314      text_1.setEditable(false);text_2.setEditable(false);
315   }

316   public void paint(Graphics g)                    //绘制围棋棋盘的外观。
317   {  for(int i=40;i<=380;i=i+20)
318       {  g.drawLine(40,i,400,i);
319       }

320      g.drawLine(40,400,400,400);
321      for(int j=40;j<=380;j=j+20)
322       { g.drawLine(j,40,j,400);
323       }

324       g.drawLine(400,40,400,400); 
325       g.fillOval(97,97,6,6); g.fillOval(337,97,6,6);
326       g.fillOval(97,337,6,6);g.fillOval(337,337,6,6);
327       g.fillOval(217,217,6,6);
328   }

329   public void mousePressed(MouseEvent e)     //当按下鼠标左键时下棋子。
330   {  if(e.getModifiers()==InputEvent.BUTTON1_MASK)
331        {  x=(int)e.getX();y=(int)e.getY();      //获取按下鼠标时的坐标位置。
332           ChessPoint_black chesspoint_black=new ChessPoint_black(this);
333           ChessPoint_white chesspoint_white=new ChessPoint_white(this);
334           int a=(x+10)/20,b=(y+10)/20;
335           if(x/20<2||y/20<2||x/20>19||y/20>19)    //棋盘以外不下棋子。
336            {}
337           else
338            
339              if(棋子颜色==1)                       //当棋子颜色是1时下黑棋子。
340               {  this.add(chesspoint_black);
341                  chesspoint_black.setBounds(a*20-7,b*20-7,16,16);
342                  棋子颜色=棋子颜色*(-1);             
343                  text_2.setText("请白棋下子");
344                  text_1.setText("");
345               }

346              else if(棋子颜色==-1)                   //当棋子颜色是-1时下白棋子。
347               {  this.add(chesspoint_white);
348                  chesspoint_white.setBounds(a*20-7,b*20-7,16,16);
349                   棋子颜色=棋子颜色*(-1);
350                  text_1.setText("请黑棋下子");
351                  text_2.setText("");
352               }

353            }

354       }

355   }

356   public void mouseReleased(MouseEvent e){}
357   public void mouseEntered(MouseEvent e) {}
358   public void mouseExited(MouseEvent e) {}
359   public void mouseClicked(MouseEvent e){}
360   public void actionPerformed(ActionEvent e)
361   {  this.removeAll();棋子颜色=1;
362      add(button);button.setBounds(10,5,60,26);
363      add(text_1);text_1.setBounds(90,5,90,24);  
364      text_2.setText("");text_1.setText("请黑棋下子");
365      add(text_2);text_2.setBounds(290,5,90,24);
366   }

367}

368//负责创建黑色棋子的类:
369class ChessPoint_black extends Canvas implements MouseListener
370{  ChessPad chesspad=null;                        //棋子所在的棋盘。
371   ChessPoint_black(ChessPad p)
372   {  setSize(20,20);chesspad=p; addMouseListener(this);
373   }

374   public void paint(Graphics g)         //绘制棋子的大小。
375   {  g.setColor(Color.black);g.fillOval(0,0,14,14);
376   }
 
377   public void mousePressed(MouseEvent e) 
378   {  if(e.getModifiers()==InputEvent.BUTTON3_MASK)
379       {  chesspad.remove(this);//当用鼠标右键点击棋子时,从棋盘中去掉该棋子(悔棋)。
380          chesspad.棋子颜色=1;
381          chesspad.text_2.setText("");chesspad.text_1.setText("请黑棋下子");
382        }

383   }

384   public void mouseReleased(MouseEvent e){}
385   public void mouseEntered(MouseEvent e) {}
386   public void mouseExited(MouseEvent e) {}
387   public void mouseClicked(MouseEvent e)
388   {  if(e.getClickCount()>=2)
389         chesspad.remove(this);             //当用左键双击该棋子时,吃掉该棋子。
390   }

391}

392//负责创建白色棋子的类:
393class ChessPoint_white extends Canvas implements MouseListener
394{  ChessPad chesspad=null;
395   ChessPoint_white(ChessPad p)
396   {  setSize(20,20);addMouseListener(this);
397      chesspad=p; 
398   }

399   public void paint(Graphics g)
400   {  g.setColor(Color.white);g.fillOval(0,0,14,14); 
401   }
 
402   public void mousePressed(MouseEvent e)
403   {  if(e.getModifiers()==InputEvent.BUTTON3_MASK)
404        {  chesspad.remove(this);chesspad.棋子颜色=-1;
405           chesspad.text_2.setText("请白棋下子"); chesspad.text_1.setText("");
406        }

407   }

408   public void mouseReleased(MouseEvent e){}
409   public void mouseEntered(MouseEvent e) {}
410   public void mouseExited(MouseEvent e) {}
411   public void mouseClicked(MouseEvent e)
412   {  if(e.getClickCount()>=2)
413         chesspad.remove(this);
414   }

415}

416public class Chess extends Frame  //添加棋盘的窗口。
417{  ChessPad chesspad=new ChessPad();
418   Chess()
419   {  setVisible(true);
420      setLayout(null);
421    Label label=
422    new Label("单击左键下棋子,双击吃棋子,用右键单击棋子悔棋",Label.CENTER);
423      add(label);label.setBounds(70,55,440,26);
424      label.setBackground(Color.orange); 
425      add(chesspad);chesspad.setBounds(70,90,440,440);
426      addWindowListener(new WindowAdapter()
427                 {public void windowClosing(WindowEvent e)
428                         {System.exit(0);
429                         }

430             }
);
431     pack();setSize(600,550);
432   }

433public static void main(String args[])
434   {  Chess chess=new Chess();
435   }

436}

437
438//例子9
439import java.awt.event.*;import java.applet.*;
440import java.awt.*;
441public class Move extends.Applet implements KeyListener,ActionListener
442{  Button b_go=new Button("go"),
443   b_replay=new Button("replay");
444   Rectangle rect1,rect2,rect3;
445   int b_x=0,b_y=0;
446   public void init()
447   {  b_go.addKeyListener(this);
448      b_replay.addActionListener(this);
449      setLayout(null);
450      //代表迷宫的矩形:
451      rect1=new Rectangle(20,40,200,40);
452      rect2=new Rectangle(200,40,24,240);
453      rect3=new Rectangle(200,220,100,40);
454      b_go.setBackground(Color.red);      //代表走迷宫者的按扭。 
455      add(b_go);b_go.setBounds(22,45,20,20);
456      b_x=b_go.getBounds().x;b_y=b_go.getBounds().y;
457      b_go.requestFocus() ;
458      add(b_replay);b_replay.setBounds(2,2,45,16);//点击重新开始的按扭。   
459   }

460   public void paint(Graphics g)
461   {  //画出迷宫:
462      g.setColor(Color.green);
463      g.fillRect(20,40,200,40);
464      g.setColor(Color.yellow);
465      g.fillRect(200,40,40,240);
466      g.setColor(Color.cyan);
467      g.fillRect(200,220,100,40);
468      g.drawString("出口",310,220);
469      g.setColor(Color.black);
470      g.drawString("点击红色按扭,然后用键盘上的方向键移动按扭",100,20);
471   }

472   public void keyPressed(KeyEvent e)
473   {  //按键盘上的上下、左右键在迷宫中行走:
474      if((e.getKeyCode()==KeyEvent.VK_UP))
475        //创建一个和按扭:b_go 同样大小的矩形:
476          Rectangle rect=new Rectangle(b_x,b_y,20,20);
477         //要求必须在迷宫内行走:
478           if(rect.intersects(rect1)||rect.intersects(rect2)||
479rect.intersects(rect3))
480             {  b_y=b_y-2;b_go.setLocation(b_x,b_y);
481             }

482         }

483       else if(e.getKeyCode()==KeyEvent.VK_DOWN)
484         {  Rectangle rect=new Rectangle(b_x,b_y,20,20);
485            if(rect.intersects(rect1)||rect.intersects(rect2)||
486rect.intersects(rect3))
487             { b_y=b_y+2;b_go.setLocation(b_x,b_y);
488             }

489         }

490       else if(e.getKeyCode()==KeyEvent.VK_LEFT)
491         {  Rectangle rect=new Rectangle(b_x,b_y,20,20);
492            if(rect.intersects(rect1)||rect.intersects(rect2)
493||rect.intersects(rect3))
494             {  b_x=b_x-2;b_go.setLocation(b_x,b_y);
495             }
 
496          }
 
497      else if(e.getKeyCode()==KeyEvent.VK_RIGHT)
498         {  Rectangle rect=new Rectangle(b_x,b_y,20,20);
499           if(rect.intersects(rect1)||rect.intersects(rect2)||
500rect.intersects(rect3))
501              { b_x=b_x+2;b_go.setLocation(b_x,b_y);
502              }

503      }

504   }

505   public void keyReleased(KeyEvent e){}
506   public void keyTyped(KeyEvent e){}
507   public void actionPerformed(ActionEvent e)
508   {  b_go.setBounds(22,45,20,20); 
509  b_x=b_go.getBounds().x;b_y=b_go.getBounds().y;
510  b_go.requestFocus() ;
511 }
 
512}

513
514//例子10
515import java.awt.*;import java.applet.*;import java.awt.event.*;
516class People extends Button implements FocusListener  //代表华容道人物的类。
517{  Rectangle rect=null;
518   int left_x,left_y;//按扭的左上角坐标.
519   int width,height; //按扭的宽和高.
520   String name; int number;
521   People(int number,String s,int x,int y,int w,int h,Hua_Rong_Road road)
522   {  super(s);
523      name=s;this.number=number;
524      left_x=x;left_y=y;
525      width=w;height=h;setBackground(Color.orange);
526      road.add(this);    addKeyListener(road);
527      setBounds(x,y,w,h);addFocusListener(this);
528      rect=new Rectangle(x,y,w,h);
529   }

530   public void focusGained(FocusEvent e)
531   {  setBackground(Color.red);
532   }

533   public void focusLost(FocusEvent e)
534   {   setBackground(Color.orange);
535   }

536}

537public class Hua_Rong_Road extends Applet implements KeyListener,ActionListener
538{  People people[]=new People[10];
539   Rectangle left,right,above ,below;//华容道的边界 .
540   Button restart=new Button("重新开始");   
541   public void init()
542   {  setLayout(null); add(restart);
543      restart.setBounds(5,5,80,25);
544      restart.addActionListener(this);
545      people[0]=new People(0,"曹操",104,54,100,100,this); 
546      people[1]=new People(1,"关羽",104,154,100,50,this); 
547      people[2]=new People(2,"张飞",54154,50,100,this); 
548    people[3]=new People(3,"刘备",204,154,50,100,this); 
549    people[4]=new People(4,"张辽",545450,100,this); 
550    people[5]=new People(5,"曹仁",2045450,100,this);  
551    people[6]=new People(6,"兵  ",54,254,50,50,this);  
552    people[7]=new People(7,"兵  ",204,254,50,50,this); 
553    people[8]=new People(8,"兵  ",104,204,50,50,this); 
554    people[9]=new People(9,"兵  ",154,204,50,50,this); 
555    people[9].requestFocus();
556    left=new Rectangle(49,49,5,260);
557  people[0].setForeground(Color.white) ;   
558    right=new Rectangle(254,49,5,260);
559      above=new Rectangle(49,49,210,5);
560      below=new Rectangle(49,304,210,5);
561   }

562   public void paint(Graphics g)
563   {  //画出华容道的边界:
564      g.setColor(Color.cyan);
565      g.fillRect(49,49,5,260);//left.
566      g.fillRect(254,49,5,260);//right.
567      g.fillRect(49,49,210,5); //above.
568      g.fillRect(49,304,210,5);//below.
569      //提示曹操逃出位置和按键规则:
570      g.drawString("点击相应的人物,然后按键盘上的上下左右箭头移动",100,20);
571      g.setColor(Color.red);
572      g.drawString("曹操到达该位置",110,300);
573   }

574   public void keyPressed(KeyEvent e) 
575   {  People man=(People)e.getSource();//获取事件源.
576       man.rect.setLocation(man.getBounds().x, man.getBounds().y);
577       if(e.getKeyCode()==KeyEvent.VK_DOWN)
578         {  man.left_y=man.left_y+50;     //向下前进50个单位。
579            man.setLocation(man.left_x,man.left_y);
580            man.rect.setLocation(man.left_x,man.left_y);
581              //判断是否和其它人物或下边界出现重叠,如果出现重叠就退回50个单位距离。       
582            for(int i=0;i<10;i++)
583                {if((man.rect.intersects(people[i].rect))&&(man.number!=i))
584                    {  man.left_y=man.left_y-50;
585                       man.setLocation(man.left_x,man.left_y);
586                       man.rect.setLocation(man.left_x,man.left_y);   
587                    }

588                 }

589             if(man.rect.intersects(below))
590                 {  man.left_y=man.left_y-50;
591                    man.setLocation(man.left_x,man.left_y);
592                    man.rect.setLocation(man.left_x,man.left_y); 
593                 }
 
594         }

595       if(e.getKeyCode()==KeyEvent.VK_UP)
596        {  man.left_y=man.left_y-50;     //向上前进50个单位。
597           man.setLocation(man.left_x,man.left_y);
598           man.rect.setLocation(man.left_x,man.left_y);
599           //判断是否和其它人物或上边界出现重叠,如果出现重叠就退回50个单位距离。 
600           for(int i=0;i<10;i++)
601               {  if((man.rect.intersects(people[i].rect))&&(man.number!=i))
602                      {  man.left_y=man.left_y+50;
603                         man.setLocation(man.left_x,man.left_y);
604                          man.rect.setLocation(man.left_x,man.left_y);   
605                       }

606               }

607            if(man.rect.intersects(above))
608               {  man.left_y=man.left_y+50;
609                  man.setLocation(man.left_x,man.left_y);
610                  man.rect.setLocation(man.left_x,man.left_y); 
611               }
 
612        }

613      if(e.getKeyCode()==KeyEvent.VK_LEFT)
614        {  man.left_x=man.left_x-50;     //向左前进50个单位。
615           man.setLocation(man.left_x,man.left_y);
616           man.rect.setLocation(man.left_x,man.left_y);
617           //判断是否和其它人物或左边界出现重叠,如果出现重叠就退回50个单位距离。
618          for(int i=0;i<10;i++)
619               {  if((man.rect.intersects(people[i].rect))&&(man.number!=i))
620                    { man.left_x=man.left_x+50;
621                      man.setLocation(man.left_x,man.left_y);
622                      man.rect.setLocation(man.left_x,man.left_y);   
623                     }

624               }

625          if(man.rect.intersects(left))
626              {  man.left_x=man.left_x+50;
627                 man.setLocation(man.left_x,man.left_y);
628                 man.rect.setLocation(man.left_x,man.left_y); 
629               }
 
630        }

631      if(e.getKeyCode()==KeyEvent.VK_RIGHT)
632       {  man.left_x=man.left_x+50;     //向右前进50个单位。
633          man.setLocation(man.left_x,man.left_y);
634          man.rect.setLocation(man.left_x,man.left_y);
635         //判断是否和其它人物或右边界出现重叠,如果出现重叠就退回50个单位距离。
636          for(int i=0;i<10;i++)
637              {  if((man.rect.intersects(people[i].rect))&&(man.number!=i))
638                    { man.left_x=man.left_x-50;
639                      man.setLocation(man.left_x,man.left_y);
640                      man.rect.setLocation(man.left_x,man.left_y);   
641                     }

642               }

643           if(man.rect.intersects(right))
644               {  man.left_x=man.left_x-50;
645                  man.setLocation(man.left_x,man.left_y);
646                  man.rect.setLocation(man.left_x,man.left_y); 
647                }
 
648         }

649   }

650   public void keyTyped(KeyEvent e){}
651   public void keyReleased(KeyEvent e){}
652   public void actionPerformed(ActionEvent e)
653   {  this.removeAll();
654      this.init();
655   }
 
656}

657
posted @ 2005-05-27 09:36  Rookie.Zhang  阅读(2533)  评论(1编辑  收藏  举报