/***************************************** 展示鍵盤事件處理,直接implements KeyListener *************************************************/ import java.awt.*; import java.awt.event.*; import javax.swing.*; public class ui10 extends JFrame implements KeyListener { Image img; int imgpt=52; int x,y; public ui10() { super("滑鼠事件處理"); // 弄一張圖來娛樂一下 img=Toolkit.getDefaultToolkit().createImage("bridge/"+imgpt+".GIF"); //設定滑鼠事件處理程式 addMouseMotionListener(new procmouse()); addMouseListener(new checkmouse()); setSize(600,480); x=100; y=100; addKeyListener(this);//註冊按鍵處理物件 setFocusable(true); requestFocus(); setVisible(true); } public void paint(Graphics g) { super.paint(g); g.drawImage(img, x,y, this);//跟著滑鼠畫出圖 } /***實作按鍵處理方法***/ public void keyReleased(KeyEvent e){}//這兩個方法不實作都不行 public void keyTyped(KeyEvent e){} public void keyPressed(KeyEvent e) { if (e.getKeyCode()==e.VK_UP) //向上鍵 { y=y-10; if (y<100) y=100; } else if (e.getKeyCode()==e.VK_DOWN) //向下鍵 { y=y+10; if (y>450) y=450; } else if (e.getKeyCode()==e.VK_LEFT) //向左鍵 { x=x-10; if (x<0) x=0; } else if (e.getKeyCode()==e.VK_RIGHT) //向右鍵 { x=x+10; if (x>600) x=600; } else if (e.getKeyChar()=='q'||e.getKeyChar()=='Q') //跳出程式 { System.exit(0); } else if (e.getKeyCode()==e.VK_Z) //包含C與c 換牌 { imgpt=imgpt+1; if (imgpt>52) imgpt=10; img=Toolkit.getDefaultToolkit().createImage("bridge/"+imgpt+".GIF"); } else if (e.getKeyChar()=='X'||e.getKeyChar()=='x') //換牌 { imgpt=imgpt-1; if (imgpt<10) imgpt=52; img=Toolkit.getDefaultToolkit().createImage("bridge/"+imgpt+".GIF"); } repaint(); } /*****實作滑鼠移動事件處理物件 *******/ class procmouse extends MouseMotionAdapter { /*****實作滑鼠移動事件處理方法 *******/ public void mouseDragged(MouseEvent e) { //取得X Y座標 x=e.getX(); y=e.getY(); if (y>80) //太上面就不要show了 repaint(); } } /*****實作滑鼠事件處理物件 *******/ class checkmouse extends MouseAdapter { /*****實作滑鼠事件處理程式 *******/ public void mouseClicked(MouseEvent e) { int button=e.getButton(); //JDK 1.3不認識左右鍵 if (button==e.BUTTON1) //左鍵換牌 { imgpt=imgpt+1; if (imgpt>52) imgpt=10; } else if (button==e.BUTTON3) //右鍵換牌 { imgpt=imgpt-1; if (imgpt<10) imgpt=52; } //重新抓圖 img=Toolkit.getDefaultToolkit().createImage("bridge/"+imgpt+".GIF"); repaint(); //重新顯示一次 } } public static void main(String args[]) //程式起點 { ui10 app=new ui10(); //畫圖 //處理視窗關閉要求 app.addWindowListener( new WindowAdapter() { public void windowClosing(WindowEvent e) { System.exit(0);} }); } }