我正在尝试将keylistener添加到我的JPanel中,但即使在此之后也无法使用:
put.setFocusable(true);
put.requestFocusInWindow();
KeyboardHandler keyhandler=new KeyboardHandler();
put.addKeyListener(keyhandler);
}
private class KeyboardHandler implements KeyListener{
public void keyPressed(KeyEvent e) {
System.out.println("OVDE ZZZ");
if(e.getKeyCode()==17) ctrl=true;
if(e.getKeyCode()==90) z=true;
if(ctrl && z){
if (UndoBrojac==0) JOptionPane.showMessageDialog(null, "You can't undo that");
else{
UndoBrojac--;
put.setUndo(UndoBrojac);
}
}
}
public void keyReleased(KeyEvent e){
if (e.getKeyCode()==17) ctrl = false;
if (e.getKeyCode()==90) z = false;
}
public void keyTyped(KeyEvent e) {}
}
我正在尝试添加ctrl + z,但它不起作用。
答案 0 :(得分:2)
一些有用的评论建议使用Key Bindings。如here所示,在Action
的上下文中将KeyEvent.VK_Z
指定为ACCELERATOR_KEY
特别容易。如果要撤消对文本组件的更改,请参阅How to Write an Undoable Edit Listener;引用的TextComponentDemo
说明了一个典型的UndoAction
。