LibPhoneNumber ( http://code.google.com/p/libphonenumber/ ) の AsYouTypeFormatter を JTextField と共に使用して、電話番号をフォーマットしたいと考えています。ただし、ドキュメント リスナーを使用して JTextField のテキストを変更することはできず、ActionListener はマウスがクリックされたときにのみ機能します。私が見た他のすべての質問は、Android 用の AsYouTypeFormatter の使用に関するものですが、私はデスクトップ アプリケーションを作成しています。
phoneUtil = PhoneNumberUtil.getInstance();
formatter = phoneUtil.getAsYouTypeFormatter("US");
addPhoneF = new JTextField(20);
addPhoneF.getDocument().addDocumentListener(this);
@Override
public void insertUpdate(DocumentEvent e) {
// TODO Auto-generated method stub
String unformattedNumber = addPhoneF.getText();
String formattedNumber = "";
for (int i = 0; i<unformattedNumber.length() - 1; i++) {
formattedNumber += formatter.inputDigit(unformattedNumber.charAt(i));
}
addPhoneF.setText(formattedNumber);
}
@Override
public void removeUpdate(DocumentEvent e) {
// TODO Auto-generated method stub
String unformattedNumber = addPhoneF.getText();
String formattedNumber = "";
for (int i = 0; i<unformattedNumber.length() - 1; i++) {
formattedNumber += formatter.inputDigit(unformattedNumber.charAt(i));
}
addPhoneF.setText(formattedNumber);
}
@Override
public void changedUpdate(DocumentEvent e) {
// TODO Auto-generated method stub
String unformattedNumber = addPhoneF.getText();
String formattedNumber = "";
for (int i = 0; i<unformattedNumber.length() - 1; i++) {
formattedNumber += formatter.inputDigit(unformattedNumber.charAt(i));
}
addPhoneF.setText(formattedNumber);
}