Утверждение десятичных чисел в jtextfield в java

Я хочу санкционировать в jtexfield, который одинокий пользователь вводил бы или число или один. но что смог вводить только точку не некоторые, а именно 3.3 не 3. 3, у меня есть этот код, но не, как способствование тому, чтобы он не ввел повторенные точки, я верю в jtexfield с кода здесь эта код.

NumerosDeLaRestriccion[y] = new JTextField();
            NumerosDeLaRestriccion[y].setSize(50, 25);
            NumerosDeLaRestriccion[y].setLocation(Columna, fila);
            NumerosDeLaRestriccion[y].addKeyListener(new KeyAdapter() {
                @Override
                public void keyTyped(KeyEvent e) {
                    char caracter = e.getKeyChar();
                    if (((caracter < '0') || (caracter > '9')) && (caracter != KeyEvent.VK_BACK_SPACE)
                            && (caracter != '.') ) {
                        e.consume();
                    }
                }
            });
2
задан 19.01.2017, 23:08
0 ответов

В способе, что ты это делаешь сейчас, только ты контролируешь клавиши, позволенный. Если ты хочешь убедиться, что целый формат стоится (с единственной точкой) ты должен искать доступ к целому контенту JTextField и подтверждать это (например с regex или contains):

NumerosDeLaRestriccion[y].setLocation(Columna, fila);
final TextField miJTextField = NumerosDeLaRestriccion[y];

...

if (((caracter < '0') || (caracter > '9')) 
        && (caracter != KeyEvent.VK_BACK_SPACE)
        && (caracter != '.' || miJTextField.getText().contains(".")) ) {
            e.consume();
}

знача:

Если клавиши нет один ".", или если его один "." и JTextField уже содержит один (или больше) => e.consume()

1
ответ дан 03.12.2019, 17:37
  • 1
    NumerosDeLaRestriccion [и] .getText () .contains (".") это дает мне ошибку java говорит мне 'local variables referenced from an inner class must be final or effectively final –  20.01.2017, 00:40
  • 2
    Если, ты будешь должен распределять ссылку на TextField на переменную final. я буду издавать. –  20.01.2017, 01:23
  • 3
    сейчас, если, совершенный –  20.01.2017, 01:30