JavaWeb综合案例-键盘模拟

简介:

学完了JavaScript之后,自己突发奇想,想写一个模拟键盘的小程序。代码如下:

程序特色:

  1. 按下按键打印对应的keyCode值,并且对应的键会变色,键升起又会恢复颜色。

  2. 按下按键语音对应的键名(采用audio标签,这是HTML5的新标签)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
<!doctype html>
<html lang= "en" >
  <!--
  需求:通过键盘点击,结合键盘事件来模拟按下了哪个键。
     onkeydown
  onkeyup
  思路:
  1.在onload事件中创建键盘视图
  2.定义一个输入框来接收和触发键盘事件
  3.同时返回按下的那个键的keyCode值
  
  -->
  <head>
   <meta charset= "UTF-8" >
   <meta name= "Generator"  content= "EditPlus" >
   <meta name= "Author"  content= "" >
   <meta name= "Keywords"  content= "" >
   <meta name= "Description"  content= "" >
   <title>模拟键盘</title>
   <style type= "text/css" >
   /*键盘外边框格式*/
   #keycontainer{
    border:3px solid red;
    padding:50px 50px;
   }
   /*每个按键的格式*/
   span{
    border:1px solid red;
    background:black;
    width:50px;
    color:white;
    font-size:1cm;
    display:inline-block;
    padding:1px;
   }
   /*输入框的格式*/
   #input{
    border:1px solid red;
   }
   </style>
  </head>
  <body onload= "initView();" >
   <marquee behavior= "alternate" ><font size= "6"  color= "BlueViolet"  ><b>键盘测试程序&nbsp;&nbsp;&nbsp;作者:陈章&nbsp;&nbsp;&nbsp;黑马程序员【Android70期】</b></font></marquee> 
   <div id= "keycontainer" ></div>
   <hr/>
   请在下面的文本框中按下任意一个键<br/>
   <input type= "text"  id= "input"   onkeydown= "keydown(event);"   onkeyup= "keyup(event);" />
   <!--播放音频-->
   <audio id= "soundplayer" >您的浏览器不支持audio元素</audio>
  </body>
  <script type= "text/javascript" >
  //工具函数
   function  outln(str)
  {
   document.writeln(str);
  }
  
  function  out(str)
  {
   document.write(str);
  }
  
  
  function  byID(id)
  {
   return  document.getElementById(id);
  }
  
  var  colorBefore;
  //获取音频播放器
  var  soundplayer = byID( "soundplayer" );
  
  //封装播放功能
  function  playsrc(src)
  {
   soundplayer.src = src ;
   soundplayer.play();
  }
  function  byName(name)
  {
   return  document.getElementsByName(name)[0];
  }
   
   function  keydown(e)
   {
   //遍历键盘的各个键,看哪个的值与键盘按下的值相匹配。
    var  keys = document.getElementsByTagName( "span" );
    for ( var  i = 0; i < keys.length; i++)
    {
    var  each = keys[i];
    if (each.innerHTML == String.fromCharCode(e.keyCode))
     {
     //播放对应的音频----这个功能受浏览器兼容性影响,UC/360验证可使。
     playsrc( "recordings/"  + String.fromCharCode(e.keyCode) + ".wav" );
     colorBefore = each.style.backgroundColor;
     each.style.backgroundColor =  "blue" ;
     return ;
     }
     playsrc(  "recordings/UDK.wav"  );
    }
   }
 
   function  keyup(e){
   //遍历键盘的各个键,看哪个的值与键盘按下的值相匹配。
    var  keys = document.getElementsByTagName( "span" );
    for ( var  i = 0; i < keys.length; i++)
    {
    var  each = keys[i];
    if (each.innerHTML == String.fromCharCode(e.keyCode))
     {
     each.style.backgroundColor = colorBefore;
     byID( "input" ).value=String.fromCharCode(e.keyCode) +  " keyCode值:"  + e.keyCode;
     return ;
     }
     //如果按下的键没有的话
    byID( "input" ).value=   "? keyCode值:"  + e.keyCode;
    }
   }
   // <!--初始化键盘视图-->
   
   function  initView()
   {
    var  main = byID( "keycontainer" );
    var  s =  "" ;
    s +=  "<span >Q</span >&nbsp;&nbsp;" ;
    s +=  "<span >W</span>&nbsp;&nbsp;" ;
    s +=  "<span >E</span>&nbsp;&nbsp;" ;
    s +=  "<span >R</span>&nbsp;&nbsp;" ;
    s +=  "<span >T</span>&nbsp;&nbsp;" ;
    s +=  "<span >Y</span>&nbsp;&nbsp;" ;
    s +=  "<span >U</span>&nbsp;&nbsp;" ;
    s +=  "<span >I</span>&nbsp;&nbsp;" ;
    s +=  "<span >O</span>&nbsp;&nbsp;" ;
    s +=  "<span >P</span>&nbsp;&nbsp;<br/><br/>" ;
    s +=  "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span >A</span>&nbsp;&nbsp;" ;
    s +=  "<span >S</span>&nbsp;&nbsp;" ;
    s +=  "<span >D</span>&nbsp;&nbsp;" ;
    s +=  "<span >F</span>&nbsp;&nbsp;" ;
    s +=  "<span >G</span>&nbsp;&nbsp;" ;
    s +=  "<span >H</span>&nbsp;&nbsp;" ;
    s +=  "<span >J</span>&nbsp;&nbsp;" ;
    s +=  "<span >K</span>&nbsp;&nbsp;" ;
    s +=  "<span >L</span>&nbsp;&nbsp;<br/><br/>" ;
    s +=  "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span >Z</span>&nbsp;&nbsp;" ;
    s +=  "<span >X</span>&nbsp;&nbsp;" ;
    s +=  "<span >C</span>&nbsp;&nbsp;" ;
    s +=  "<span >V</span>&nbsp;&nbsp;" ;
    s +=  "<span >B</span>&nbsp;&nbsp;" ;
    s +=  "<span >N</span>&nbsp;&nbsp;" ;
    s +=  "<span >M</span>&nbsp;&nbsp;" ;
    main.innerHTML = s;
  
    
  </script>
</html>

程序在桔子浏览器中运行之后效果如下:

wKioL1WNchnzQtumAAQs_rMWFJE806.jpg

当按下A-Z字母时,会显示字母和对应的keyCode值;其它的键会显示?和keyCode值。


      本文转自屠夫章哥  51CTO博客,原文链接:http://blog.51cto.com/4259297/1666096,如需转载请自行联系原作者








相关文章
|
24天前
|
安全 机器人 Java
|
13天前
|
人工智能 Java 定位技术
人工智能ChatGPT 体验案例:使用ChatGPT实现java扫雷小游戏
这篇文章通过一个使用ChatGPT实现的Java扫雷小游戏案例,展示了ChatGPT在编程领域的应用能力。文章中包含了扫雷游戏的Java代码实现,代码中初始化了雷区地图,随机放置雷,计算每个格子周围雷的数量,并提供了一个简单的文本界面与用户交互进行游戏。游戏通过控制台输入接受玩家的指令,并给出相应的反馈。
人工智能ChatGPT 体验案例:使用ChatGPT实现java扫雷小游戏
|
5天前
|
监控 算法 安全
Java并发编程案例分析:死锁的检测与解决
Java并发编程案例分析:死锁的检测与解决
10 2
|
6天前
|
安全 Java API
精通 Java 后台开发:案例分析与实践
精通 Java 后台开发:案例分析与实践
18 2
|
11天前
|
Java
Java枚举使用的基本案例
这篇文章是关于Java枚举的基本使用,通过一个指令下发的代码案例,展示了如何定义枚举、使用枚举以及如何通过枚举实现指令的匹配和处理。
|
12天前
|
设计模式 Java
常用设计模式介绍~~~ Java实现 【概念+案例+代码】
文章提供了一份常用设计模式的全面介绍,包括创建型模式、结构型模式和行为型模式。每种设计模式都有详细的概念讲解、案例说明、代码实例以及运行截图。作者通过这些模式的介绍,旨在帮助读者更好地理解源码、编写更优雅的代码,并进行系统重构。同时,文章还提供了GitHub上的源码地址,方便读者直接访问和学习。
常用设计模式介绍~~~ Java实现 【概念+案例+代码】
|
23天前
|
前端开发 Java 测试技术
综合案例【商品管理系统-Java基础版】(附完整源码)
综合案例【商品管理系统-Java基础版】(附完整源码)
61 9
|
23天前
|
Java
Java数组的2个小案例(杨辉三角分析和商品管理增删改查)
Java数组的2个小案例(杨辉三角分析和商品管理增删改查)
41 4
|
26天前
|
安全 Java
Java RMI技术详解与案例分析
在实际的银行系统中,当然还需要考虑安全性、事务性、持久性以及错误处理等多方面的因素,RMI的网络通信也需要在安全的网络环境下进行,以防止数据泄露或被篡改。你在应用中是怎么使用 RMI 的,欢迎关注威哥爱编程,一起交流一下哈。
137 4
|
2月前
|
安全 机器人 Java
下一篇
云函数