我想使用 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);
}