Pytanie w sprawie java, jtextfield – Jak mogę zapobiec CTRL + C na JTextField w java?

1

Jak mogę uniemożliwić użytkownikowi kopiowanie zawartości pola JTextField?

mam następujące, ale nie mogę wymyślić sposobu na uzyskanie wielu kluczy w tym samym czasie?

myTextField.addKeyListener(new KeyAdapter() {
@Override
public void keyTyped(KeyEvent e) {
  char c = e.getKeyChar();
  if (!Character.isDigit(c)) {
    e.consume();
  }
}
});

Twoja odpowiedź

1   odpowiedź
2

W tym celu będziesz musiał zmodyfikować KeyAdapter, aby mógł się rejestrować po naciśnięciu klawisza i po jego zwolnieniu, abyśmy mogli wiedzieć, kiedy oba klawisze zostały naciśnięte jednocześnie, poniższy kod powinien załatwić sprawę:

textfield.addKeyListener(new KeyAdapter() {
        boolean ctrlPressed = false;
        boolean cPressed = false;

        @Override
        public void keyPressed(KeyEvent e) {
            switch(e.getKeyCode()) {
            case KeyEvent.VK_C:
                cPressed=true;

                break;
            case KeyEvent.VK_CONTROL:
                ctrlPressed=true;
                break;
            }

            if(ctrlPressed && cPressed) {
                System.out.println("Blocked CTRl+C");
                e.consume();// Stop the event from propagating.
            }
        }

        @Override
        public void keyReleased(KeyEvent e) {
            switch(e.getKeyCode()) {
            case KeyEvent.VK_C:
                cPressed=false;

                break;
            case KeyEvent.VK_CONTROL:
                ctrlPressed=false;
                break;
            }

            if(ctrlPressed && cPressed) {
                System.out.println("Blocked CTRl+C");
                e.consume();// Stop the event from propagating.
            }
        }
    });

Właśnie dodawałem to do jednego z moich JTextFields.

umysł pokazuje nam jak? powyższy przykład działa całkiem dobrze. Basilio German
Cóż, e.getKeyCode () zwraca int, a KeyEvent.VK_C jest intdocs.oracle.com/javase/1.4.2/docs/api/java/awt/event/… Basilio German
co masz na myśli? czy próbowałeś używać przecinków w swoich zdaniach? Basilio German
prosta błędna odpowiedź, dlaczego nadpisać wbudowany skrót KeyBindings KeyListener, problem polega na tym, że możesz zagwarantować porządek słuchaczy, mKorbel

Powiązane pytania