我尝试编写一个 TextEditor。现在我可以通过添加一个按钮来实现它。而我想通过Ctrl+Z
实现撤销。如何处理?
请给我一些建议。
现在我可以通过
jta.addKeyListener(new KeyListener() {
@Override
public void keyTyped(KeyEvent e) {
if((e.getKeyChar() == 0x1a)) {
if(doManager.canUndo()) {
doManager.undo();
}
System.out.println(1);
}
}
@Override
public void keyReleased(KeyEvent e) {
}
@Override
public void keyPressed(KeyEvent e) {
}
});
为什么这不能?
jta.addKeyListener(new KeyListener() {
@Override
public void keyTyped(KeyEvent e) {
if((e.getKeyCode() == KeyEvent.VK_Z) && ((e.getModifiers() & KeyEvent.CTRL_MASK) != 0)) {
if(doManager.canUndo()) {
doManager.undo();
}
System.out.println(1);
}
}
@Override
public void keyReleased(KeyEvent e) {
}
@Override
public void keyPressed(KeyEvent e) {
}
});
为什么这不能?
jta.addKeyListener(new KeyListener() {
@Override
public void keyTyped(KeyEvent e) {
if((e.getKeyCode() == KeyEvent.VK_Z) && (e.isControlDown() == true)) {
if(doManager.canUndo()) {
doManager.undo();
}
System.out.println(1);
}
}
@Override
public void keyReleased(KeyEvent e) {
}
@Override
public void keyPressed(KeyEvent e) {
}
});
@菲利克斯格柏
最佳答案
要走的路是添加一个 KeyListener到您的用户界面。
Oracle 有一个关于编写自己的 here 的小教程.
这是一个检查 CRTL+Z
是否被按下并应用于 JFrame
的小例子:
JFrame frame = new JFrame();
frame.addKeyListener(new KeyListener() {
@Override
public void keyTyped(KeyEvent e) {
}
@Override
public void keyReleased(KeyEvent e) {
// TODO Auto-generated method stub
}
@Override
public void keyPressed(KeyEvent e) {
if ((e.getKeyCode() == KeyEvent.VK_Z) && ((e.getModifiers() & KeyEvent.CTRL_MASK) != 0))
{
System.out.println("Your code here!");
}
}
});
frame.setLocationRelativeTo(null);
frame.setSize(200, 200);
frame.setVisible(true);
关于java - java中ctrl+z如何实现撤销,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34411898/