Как санкционировать jtextfield в java для того, чтобы он принял только числа? [закрывшая]

Вопрос, как стоивший Jtextfield java, не используя keyTyped для того, чтобы он только принял числа, не захотел использовать KeyTyped, нуждался в другой альтернативе санкционирования для того, чтобы он только принял числа.

2
задан 17.01.2017, 17:07
0 ответов

Серьезная альтернатива использовать код ascii https://es.wikipedia.org/wiki/ASCII проверяет коды http://ascii.cl/es/

часть, которая интересует нас, - числа: introducir la descripción de la imagen aquí

следовательно в коде он был бы:

if(datoCharIngresado>=48 && datoCharIngresado<=57)
2
ответ дан 03.12.2019, 17:39

Почему ты не используешь JFormattedTextField? Он очень легкий для того, чтобы быть использованным.

public static void main(String[] args) {
    NumberFormat format = NumberFormat.getInstance();
    NumberFormatter formatter = new NumberFormatter(format);
    formatter.setValueClass(Integer.class);
    formatter.setMinimum(0); //valor mínimo
    formatter.setMaximum(Integer.MAX_VALUE); //valor máximo
    formatter.setAllowsInvalid(false);
    // Si quieres comprobar que sea válido, cada vez que se pulse una tecla
    formatter.setCommitsOnValidEdit(true);
    JFormattedTextField field = new JFormattedTextField(formatter);

    JOptionPane.showMessageDialog(null, field);

    //Para recoger el valor del JFormattedTextField --> field.getValue();
}
2
ответ дан 03.12.2019, 17:39

Здесь у тебя есть очень хороший ответ, который выдвигает тебе эти методы:

  • Функция, которую он пробовал бы конвертировать String в одном Double.

    public static boolean isNumeric(String str)
    {
        try
        {
            double d = Double.parseDouble(str);
        }
        catch(NumberFormatException nfe)
        {  
            return false;
        }
        return true;
    

    }

  • Регулярное выражение. Включи символ "-" для негативов и для десятичных (с ". "). Если бы хотелось с"," для десятичного, заменять точку параметра matches.

    public static boolean isNumeric(String str)
    {
      return str.matches("-?\\d+(\\.\\d+)?");  
    }
    
  • Используя книжный магазин Java java.text. NumberFormat

    public static boolean isNumeric(String str)
    {
        NumberFormat formatter = NumberFormat.getInstance();
        ParsePosition pos = new ParsePosition(0);
        formatter.parse(str, pos);
        return str.length() == pos.getIndex();
    }
    
2
ответ дан 03.12.2019, 17:39