JAVA ЗАмена запятой на точку, на ходу в JTEXTField
Подскажите, есть JtextField пользователь вводит в него число, и во время ввода в JTextPane отображается уже результат. Число вводится десятичное и если пользователь вводит запятую как разделитель, программа выдает ошибку, как запретить вводить запятую заменив ее на точку на ходу в JTextField. И можно ли как-то запретить вводить любые буквенные символы? Пробую сделать так:
admixture.getDocument().addDocumentListener(new DocumentListener() {
public void changedUpdate(DocumentEvent arg0) {
String str = admixture.getText().replaceAll(",",".");
admixture.setText(str);
admixtureP.setText(String.valueOf(Double.parseDouble(admixture_mineral.getText())*2));
}
public void insertUpdate(DocumentEvent arg0) {
String str = admixture.getText().replaceAll(",",".");
admixture.setText(str);
admixtureP.setText(String.valueOf(Double.parseDouble(admixture_mineral.getText())*2));
}
public void removeUpdate(DocumentEvent arg0) {
String str = admixture.getText().replaceAll(",",".");
admixture.setText(str);
admixtureP.setText(String.valueOf(Double.parseDouble(admixture_mineral.getText())*2));
}
});
Выдает Attempt to mutate in notification
Ответы (1 шт):
Автор решения: Perfect Voyage
→ Ссылка
Если в двух словах, то проще всего повесить Listner, а проверку на число использовать при помощи парсинга стандартными средствами.
JTextField fff = new JTextField();
fff.addActionListener(e->{
if(fff.getText().contains(",")){
// YourAction of Error
}
try { Double.parseDouble(fff.getText());}
catch (Exception ex){
// YourAction of Error
}
});