В java, я пытаюсь сделать простой конвертер валют, но для этого мне нужно текстовое поле, которое может ограничивать ввод только номерами и, что более важно, двойными номерами. Я пробовал использовать JFormatedTextField
, но он только форматирует ввод после того, как вы сделали свой ввод, и щелкните в другом месте, но мне нужно ограничить TextField до . ( каждый недопустимый символ при выполнении ввода.Ограничить ввод JTextField в двойные числа?
Возможные попытки:
Использование JFormatedTextField
:
JFormatedTextField textField = new JFormatedTextField(new DoubleFormat());
textField.setBounds(190, 49, 146, 33);
frame.getContentPane().add(textField);
textField.setColumns(10);
Использование KeyTyped Event
:
char c = arg0.getKeyChar();
if(!(Character.isDigit(c) || c == KeyEvent.VK_BACK_SPACE || c== KeyEvent.VK_DELETE)){
arg0.consume();
}
Использование KeyTyped Event
с регулярным выражением:
if(!((textField.getText().toString+arg0.getKeyChar()).matches("[0-9]*(.[0-9]*)?"))){
arg0.consume();
}
Вторая и третья попытка были близки, но затем вторая попытка не удалась по значениям точки, а третья попытка всегда считывала первый символ на textField независимо от того, что это такое, поэтому любые предложения? Я не очень люблю JAVA GUI, любезно проявляю терпение.
1) Java GUI должны работать с различными ОС, размером экрана, разрешением экрана и т. Д., Используя разные PLAF в разных локалях. Таким образом, они не способствуют идеальной компоновке пикселей. Вместо этого используйте диспетчеры макетов или [их комбинации] (http: // stackoverflow.com/a/5630271/418556) вместе с макетом и границами для [пробела] (http://stackoverflow.com/a/17874718/418556). 2) Для этой задачи я хотел бы использовать 'JSpinner' с' SpinnerNumberModel'. –
Это простое текстовое поле редактирования, необходимое для ввода входного номера, если я склонен использовать spinner, как я могу указать число разной длины? означает 34533434445545345345345.3454543534535345345 –