[Java] 按键监听--不冲突 →→→→→进入此内容的聊天室

来自 , 2020-12-17, 写在 Java, 查看 137 次.
URL http://www.code666.cn/view/d282ef26
  1. package s1214键盘监听事件移动方块;
  2. //w,a,s,d控制移动
  3. import java.awt.Graphics;
  4. import java.awt.event.KeyAdapter;
  5. import java.awt.event.KeyEvent;
  6. import javax.swing.JFrame;
  7. import javax.swing.JPanel;
  8. import 工具类.ThreadSleep;
  9.  
  10. public class Main1214 extends JFrame
  11. {
  12.   static int x=50;
  13.   static int y=50;
  14.   static int speed=10;
  15.   static boolean upFlag=false;
  16.   static boolean downFlag=false;
  17.   static boolean leftFlag=false;
  18.   static boolean rightFlag=false;
  19.  
  20.         public static void  main(String[] args)
  21.         {  
  22.                
  23.                 Main1214 a= new Main1214();
  24.  
  25.                 while(true)
  26.                 {
  27.                  ThreadSleep.threadSleep(30);                      
  28.                   if(upFlag)    {y-=speed;}//向上移动
  29.                   if(downFlag)  {y+=speed;}//向下移动
  30.                   if(leftFlag)  {x-=speed;}//向左移动              
  31.                   if(rightFlag) {x+=speed;}//向右移动
  32.           a.repaint();//重绘
  33.                 }              
  34.         }
  35.                
  36.         Main1214()
  37.         {  
  38.            this.setTitle("移动滑块");        //设置窗体标题
  39.            this.setDefaultCloseOperation(3);//设置窗体关闭方式
  40.            this.setSize(700,700);           //设置窗体大小
  41.            this.setResizable(true);         //设置窗体大笑可变
  42.            this.setLocationRelativeTo(null);//设置窗体居中                     
  43.            JPanel drawPanel=new JPanel()    //创建画板对象,用来画图    
  44.                   {              
  45.                      public void paint(Graphics g)                
  46.                     {
  47.                          super.paint(g);
  48.                          g.fillRect(x,y,30,30);      //画出方块
  49.                     }
  50.           };       
  51.          
  52.            this.addKeyListener(new KeyAdapter()     //匿名对象和匿名内部类的使用
  53.             {
  54.                          
  55. //关键代码**************************************************************************
  56.                               public void keyPressed(KeyEvent e) //按下按键
  57.                               {
  58.                                     if(e.getKeyCode()==KeyEvent.VK_W){upFlag=true;}                
  59.                                     if(e.getKeyCode()==KeyEvent.VK_S){downFlag=true;}
  60.                                     if(e.getKeyCode()==KeyEvent.VK_A){leftFlag=true;}
  61.                                     if(e.getKeyCode()==KeyEvent.VK_D){rightFlag=true;}  
  62.                               }        
  63.                              
  64.                               public void keyReleased(KeyEvent e)//松开按键
  65.                               {
  66.                                 if(e.getKeyCode()==KeyEvent.VK_W){upFlag=false;}                   
  67.                                         if(e.getKeyCode()==KeyEvent.VK_S){downFlag=false;}
  68.                                         if(e.getKeyCode()==KeyEvent.VK_A){leftFlag=false;}
  69.                                         if(e.getKeyCode()==KeyEvent.VK_D){rightFlag=false;}                      
  70.                               }
  71. //关键代码**************************************************************************                             
  72.              
  73.                       });
  74.  
  75.                       this.add(drawPanel);   //将画板添加到窗体
  76.                       this.setVisible(true); //设置窗体可见
  77.                 }
  78.         }

回复 "按键监听--不冲突"

这儿你可以回复上面这条便签

captcha