How to implement undo by pressing Ctrl + z in java

I am trying to program a TextEditor. Now I can implement this by adding a button. And I want to implement cancellation by clicking Ctrl+Z. How to deal with it? Please give me some advice.

now i can implement it

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) {

    }
});

Why can't it?

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) {

    }
});

Why can't it?

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 Gerber

+4
source share
2 answers

The way to use it will be to add a KeyListener to your user interface.

Oracle has a little tutorial on writing your own here .

Here is a small example of checking if pressed CRTL+Zfor a:

    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);
+2
source

Thanks everyone!

now i can implement it

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) {

    }
});

and

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();
            }
        }
    }
});

and

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();
            }
        }
    }
});
+1
source

Source: https://habr.com/ru/post/1621241/


All Articles