Java: обработка символа '-' в текстовом поле пользовательского компонента - PullRequest
0 голосов
/ 02 июня 2011

У меня есть настраиваемое текстовое поле, которое принимает только цифры.

Все отлично работает, кроме случаев, когда я пытаюсь обработать отрицательный (-) знак.

public void processKeyEvent(KeyEvent ev) {

   char c = ev.getKeyChar();
   [...]

   if(c == '-' && getDocument().getLength() > 0 ){ 
      ev.consume();
   }else{
      super.processKeyEvent(ev);
   }
}

Этоотлично работает, когда я начинаю со знака - но не тогда, когда у меня уже есть числа и я хочу добавить - впереди.

Что мне действительно нужно, так это способ получить позицию, в которой этот символ вставленно я не могу найти это.

Есть идеи?

Ответы [ 2 ]

3 голосов
/ 02 июня 2011

Вы можете получить текущую позицию внутри текстового поля с помощью метода JTextComponent.getCaretPosition().

Может быть проще выполнить эту задачу с помощью DocumentListener или InputVerifier для вашего текстового компонента.

1 голос
/ 02 июня 2011

Если ваш элемент управления - TextComponent или полученный из него, вы можете попробовать использовать метод getCaretPosition, чтобы проверить, вводится ли ввод в начале текста.

...