2015-12-22 24 views
4

我嘗試編寫一個TextEditor。現在我可以通過添加一個按鈕來實現它。我想通過按Ctrl+Z來實現撤銷。如何處理它? 請給我一些建議。如何通過在java中按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) { 

    } 
}); 

@Felix格柏

+0

的可能重複意識到這一點[如何使用Ctrl + Z和Ctrl + Y與所有文本組件?](http://stackoverflow.com/questions/10532286/how-to-use-ctrlz-and-ctrly-with-all-text-components)或者:http://stackoverflow.com/question s/12030836 /撤消功能在jtextarea – Marcinek

+0

看看http://stackoverflow.com/questions/2541597/how-to-gracefully-handle-the-sigkill-signal-in-java –

回答

2

去將一個KeyListener添加到您的用戶界面的方式。

Oracle有一個關於編寫自己的here的小教程。

下面是一個小例子,如果CRTL+Z按下apllied爲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); 
1

謝謝大家!

現在我可以通過

jta.addKeyListener(new KeyListener() { 

    @Override 
    public void keyTyped(KeyEvent e) { 
     if((e.getKeyChar() == 0x1a)) { 
      if(doManager.canUndo()) { 
       doManager.undo(); 
      } 
     } 
    } 

    @Override 
    public void keyReleased(KeyEvent e) { 

    } 

    @Override 
    public void keyPressed(KeyEvent e) { 

    } 
}); 

jta.addKeyListener(new KeyListener() { 

    @Override 
    public void keyTyped(KeyEvent e) { 

    } 

    @Override 
    public void keyReleased(KeyEvent e) { 

    } 

    @Override 
    public void keyPressed(KeyEvent e) { 
     if((e.getKeyCode() == KeyEvent.VK_Z) && ((e.getModifiers() & KeyEvent.CTRL_MASK) != 0)) { 
      if(doManager.canUndo()) { 
       doManager.undo(); 
      } 
     } 
    } 
}); 

jta.addKeyListener(new KeyListener() { 

    @Override 
    public void keyTyped(KeyEvent e) { 

    } 

    @Override 
    public void keyReleased(KeyEvent e) { 

    } 

    @Override 
    public void keyPressed(KeyEvent e) { 
     if((e.getKeyCode() == KeyEvent.VK_Z) && (e.isControlDown() == true)) { 
      if(doManager.canUndo()) { 
       doManager.undo(); 
      } 
     } 
    } 
});