java - 在单个类中重复“替换”方法
问题描述
我发现自己遇到了障碍。我正在开发一个我拥有的计算器项目,其中一个对象是 JFormattedTextField,但我认为我们可以将它称为“文本字段”。在提到的对象中,我想只允许在其中输入数字,并且对可以输入的数字进行限制。
所以我创建了 CalculatorsFilter 类,并在其中创建了运行我想要的两个目标的代码,因此我们可以将类分隔为数字过滤器:
public class CalculatorsFilter extends DocumentFilter {
@Override
public void insertString(FilterBypass fb, int offset, String text,
AttributeSet attr) throws BadLocationException {
super.insertString(fb, offset, revise(text), attr);
}
public void replace(FilterBypass fb, int offset, int length, String text,
AttributeSet attrs) throws BadLocationException {
super.replace(fb, offset, length, revise(text), attrs);
}
private String revise(String text) {
final StringBuilder builder = new StringBuilder(text);
int index = 0;
while (index < builder.length()) {
if (accept(builder.charAt(index))) {
index++;
} else {
builder.deleteCharAt(index);
}
}
return builder.toString();
}
public boolean accept(final char c) {
return Character.isDigit(c) || c == '.' || c == '-' || c == '+';
}
第二部分,即极限“创造者”:
private final int numlimit;
public CalculatorsFilter(int limit) {
if (limit <= 0) {
throw new IllegalArgumentException("The number limit can not be <= 0");
}
this.numlimit = limit;
}
public void replace(FilterBypass fb, int offset, int length, String text, AttributeSet attrs) throws BadLocationException {
final int currentLength = fb.getDocument().getLength();
final int overLimit = (currentLength + text.length()) - numlimit - length;
if (overLimit > 0) {
text = text.substring(0, text.length() - overLimit);
}
if (text.length() > 0) {
super.replace(fb, offset, currentLength, text, attrs);
}
}
}
您可能已经注意到,这里的问题是我在同一个类中有相同的方法,即方法 replace()。当然,正如我实际预期的那样,它会给出一条错误消息。但是,如果我尝试将其中一个重命名为“replace1”,即使错误消息消失,重命名的方法也将不再起作用。我尝试过的另一个解决方案似乎是最简单的,只需为我想要的每个过滤器创建另一个类。然而,再次,障碍是我不能使用......
//intField is the JFormattedTextField.
intField.setDocumentFilter();
在我的 Main 类上两次,这意味着我不能对每个过滤器使用一个类。我在尝试修复时是否做错了什么,或者有没有办法在不影响其中一个的情况下解决重复的方法错误?
解决方案
推荐阅读
- java - 正则表达式,匹配非字符一次或多次
- java - Spring的JMX框架中有效bean的含义以及为自动检测MBeanExporter创建有效bean的方法
- java - 我如何布置我的按钮,以便它们从左上角到右下角(填充第一行然后第二行)
- swift - 为什么 Swift 认为我的数组是一个函数?
- python - PyQt5:未调用单独文件中的插槽
- javascript - Dart :捕获 Flutter webview 的图像
- python - 验证卷积编码器的结构
- java - 春季交易
- html - 创建具有左右对齐项目的导航栏
- java - java + json:如何从包含对象数组{[ {},{}]}的json对象中获取元素