gpt4 book ai didi

java - 将 AsYouTypeFormatter 与 JTextField 一起使用

转载 作者:行者123 更新时间:2023-11-29 03:36:51 24 4
gpt4 key购买 nike

我想使用 LibPhoneNumber ( http://code.google.com/p/libphonenumber/ ) 中的 AsYouTypeFormatter 和 JTextField 来格式化电话号码。但是,我无法使用文档监听器来更改 JTextField 中的文本,并且 ActionListener 仅在单击鼠标时才起作用。我看到的所有其他问题都涉及使用 AsYouTypeFormatter for Android,但我正在制作桌面应用程序。

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);
}

最佳答案

也许您想使用 DocumentFilter,而不是 DocumentListener。前者将允许代码在更改发生之前尝试对文档进行更改,我相信这就是您想要的。

关于java - 将 AsYouTypeFormatter 与 JTextField 一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15036117/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com