如何获得一个字母的keycode

chendipi 2008-01-23 01:50:24
大家好,我在用SWING做一个屏幕键盘,里面有很多JButton,每个JButton上面写的a,b,c,d
另外,我用了ROBOT中的Keypress()方法来模拟按键。但是,这个方法只接受INT类型的 keycode。
我想问的是:有什么方法可以得到字母的keycode?
...全文
232 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
salana 2009-03-25
  • 打赏
  • 举报
回复
function searchs()
{
alert(event.keyCode);
}
insiku 2008-01-23
  • 打赏
  • 举报
回复
KeyEvent.VK_*
老紫竹 2008-01-23
  • 打赏
  • 举报
回复
大小写?那得配合全局的SHIFT / CAPSLOCK 键了,还是能解决的!

一旦发现他们按下去了,就切换name的大小写
老紫竹 2008-01-23
  • 打赏
  • 举报
回复
侦听键盘事件,读取keycode就可以了
  addKeyListener(new KeyAdapter() {
public void keyPressed(KeyEvent e) {
this_keyPressed(e);
}
});
void this_keyPressed(KeyEvent e) {
int code = e.getKeyCode(); // 这个方法就是返回keycode哦!
}
chendipi 2008-01-23
  • 打赏
  • 举报
回复
谢谢楼上的兄弟。
我目前的做法是这样的:
1. 把代表键盘按键的按钮都做成了JButton,并且把它们编成了一个数组,一一添加了ActionListener监听器。
2. 写了一个actionPerformed(ActionEvent e)方法,该方法用e.getSource() instanceof JButton 进行判断,如果按下的是一个 JButton,则会用 JButton.gettext().charat(0) 来读取该按钮上面的字母,并且得到该字母的 keycode,
3. 新建一个 Robot 对象,用该对象的 presskey(keycode) 方法模拟击键,这个 keycode 就是上面得到的。

这样的话,整个程序只要一个actionPerformed()方法就可以实现模拟。节约代码。每个 JButton 单独做事件的话,代码会很长。

我现在的问题就是:无法得到这个keycode. 我已经用这个办法试过了 KeyStroke.getKeyStroke(char).getKeyCode(); 但是程序会报错,说是无效的keycode.

另:每个Jbutton都有一个name属性吧,把keycode放进去怎么样?这个方法我也想过了,但是,每个按钮有大写,小写状态。

如果楼上的兄弟有什么好的想法,很高兴和你交流。
谢谢!
老紫竹 2008-01-23
  • 打赏
  • 举报
回复
那更简单了
1 你给每个JButton单独做按钮事件,然后对应keycode就行了
2 如果Jbutton是数组,keycode也可以放在数组里面,对应上就行了

总之,屏幕上每个JButton 你都知道对应哪个键了,因为在你设计界面的时候已经做好了

另:每个Jbutton都有一个name属性吧,把keycode放进去怎么样?
chendipi 2008-01-23
  • 打赏
  • 举报
回复
多谢楼上的兄弟。
但是我的意思是,实际上根本就没有键盘事件发生,只是 JButton 上有一些字母来表示键盘,按下一个JButton,我如何得到字母的keycode? 就是一个屏幕键盘。这个程序用在触摸屏上,没有键盘的。
再次谢谢!

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧