Я пытаюсь создать jTextField в NetBeans, который принимает ТОЛЬКО буквы. Пока мне удалось сделать это с помощью события KeyTyped. Однако, если пользователь CTRL + C текст любой, jTextField примет этот текст, когда CTRL + V'd. Я хочу предотвратить это.
Вот код события:
private void jTextField1KeyTyped(java.awt.event.KeyEvent evt) {
// TODO add your handling code here:
char c=evt.getKeyChar();
if (!(Character.isAlphabetic(c)) && !(c==KeyEvent.VK_SPACE) ){
evt.consume();
}
}
Это сработало! Спасибо!
Также обратите внимание, что вы можете динамически включать фильтр с помощью: ((AbstractDocument) jTextField1.getDocument()).setDocumentFilter(new MyDocumentFilter());
и динамически выключать фильтр с помощью: ((AbstractDocument) jTextField1.getDocument()).setDocumentFilter(null);
.
Вам не нужно заботиться об этом с помощью событий JTextField. Что вам нужно сделать, так это создать и использовать DocumentFilter для вашего конкретного JTextField. См. Этот SO-ответ - хороший пример. Примените фильтр к любому полю JTextField, которое вам нравится.