Я пытаюсь осуществить изменение кредитной карты JTextField.Всякий раз, когда пользователь вводит цифры, прикрепленный к нему слушатель проверяет, нужно ли ему добавлять "-" между каждыми 4 цифрами.
Моя проблема в том, что единственный способ, которым я знаю, что я могу это сделать - это внутри слушателя.Если я изменяю JTextField из слушателя, я получаю ошибку «mutate», которую я понял и исправил с помощью нового запускаемого объекта.
После этого новый работающий работает, но после первых 4цифры, когда необходимо добавить '-', JTextField снова вызывает слушателя с пустой строкой внутри, и я не знаю почему.
После этого я попытался удалить слушателя из объекта Runnableи добавить его после того, как я установил JTextField.
SwingUtilities.invokeLater(new Runnable() {
public void run() {
System.out.println(txtNumber.getText());
txtNumber.getDocument().removeDocumentListener(Main.getM_PaymentPanel());
txtNumber.setText(String.format("%s-",txtNumber.getText()));
txtNumber.getDocument().addDocumentListener(Main.getM_PaymentPanel());
}
});
Есть ли другой способ сделать это, вместо удаления слушателя, а затем добавить его снова?
Заранее спасибо!:)