问题描述
//为Ctrl+Z添加监听器mainclass.textarea.addKeyListener(new KeyAdapter(){ public void keyTyped(KeyEvent e){ //按键Ctrl+Zif(e.getKeyChar()==''){ if(undolist.size()>0){ //移出最后一个可撤销操作,并取消该操作 undolist.removeLast().undo(); }} } });上面的getKeyChar()应该怎么写呢? 问题补充:上面的getKeyChar()应该怎么写来的?
解决方案
e.getKeyChar() 返回的是一个 Unicode 字符,例如 shift + 'a' 返回的是 ‘A’,但 ctrl + z 并不是一个可显示的字符,这里只是碰巧返回了一个 ascii 码值等于26 的控制符号,也就是十六进制的 0x1a 或者符号 ''最好还是用 keyPressed 中的方法比较稳妥一些
解决方案二:
public void keyTyped(KeyEvent e) {if (e.getKeyChar() == 0x1a){System.out.println("Ctrl + z");}}
解决方案三:
public void keyPressed(KeyEvent e) {if (e.isControlDown() && e.getKeyCode() == KeyEvent.VK_Z){System.out.println("Ctrl + Z");}// ...}
时间: 2024-09-20 08:00:52