【发布时间】:2013-09-26 14:26:20
【问题描述】:
我的问题如下:
我有一个:
public class WWFormattedTextField extends JFormattedTextField implements FocusListener {
所有屏幕上的所有格式化文本字段都将始终为大写。我们希望它们在打字等时显示为大写。所以我们为此做了以下工作:
public class WWFormattedTextField extends JFormattedTextField implements FocusListener {
private DocumentFilter filter = new UppercaseDocumentFilter();
private boolean isEmail = false;
public WWFormattedTextField() {
super();
init();
}
private void init() {
addFocusListener(this);
((AbstractDocument) this.getDocument()).setDocumentFilter(filter);
}
public void setIsEmail(boolean email) {
//Normally this is where I would put something like
//if email is true - allow mixed case characters
this.isEmail = email;
}
public boolean getIsEmail() {
return isEmail;
}
现在所有屏幕上的所有 WWFormattedTextField 都以大写字符输入。 这里是前面提到的UppercaseDocumentFilter():
public class UppercaseDocumentFilter extends DocumentFilter{
@Override
public void insertString(DocumentFilter.FilterBypass fb, int offset, String text, AttributeSet attr) throws BadLocationException {
fb.insertString(offset, text.toUpperCase(), attr);
}
@Override
public void replace(DocumentFilter.FilterBypass fb, int offset, int length, String text, AttributeSet attrs) throws BadLocationException {
fb.replace(offset, length, text.toUpperCase(), attrs);
}
}
如您所见,这个 FormattedTextField 也有一个 isEmail 属性。当该值为真时 - 我希望允许用户在字段中输入混合大小写字符,但只能输入特定的字符。
关于我如何做到这一点的任何提示/建议?
【问题讨论】:
标签: java swing jformattedtextfield documentfilter