我的问题是:
我希望Eclipse RCP中的Text字段只允许将数字作为输入键入,并且要求它应该只允许最多'x'(比如说x = 5)字符。
我怎样才能在RCP中完成它?
我尝试过代码:
txtInput.addListener(SWT.Verify, new DecimalText(
txtInsuranceValue, 8, 1000.00));
其中txtInput是文本字段。但是当我在运行时重复输入这个字段时,这个监听器失败了。
还有其他选择吗?
答案 0 :(得分:4)
这会将文本控件中的最大字符数设置为5,并且只允许输入数字:
txtInput.setTextLimit(5);
txtInput.addVerifyListener(new VerifyListener() {
public void verifyText(VerifyEvent event) {
// Assume we allow it
event.doit = true;
String text = event.text;
char[] chars = text.toCharArray();
//Don't allow if text contains non-digit characters
for (int i = 0; i < chars.length; i++) {
if (!Character.isDigit(chars[i])) {
event.doit = false;
break;
}
}
}
});
编辑:我修改了我的答案,允许用户也使用“setText(String string)”设置文本,同时仍禁止使用非数字字符。
答案 1 :(得分:0)
通常,添加verifyListeners / focusListeners等解决方案并不完整,不适用于所有情况。例如,当用户将某些文本复制粘贴到此文本框中时会发生什么?
如果您只想从用户那里获得数字输入,那么您应该使用Spinner小部件而不是Text小部件。您可以轻松地在Spinner上设置最小和最大限制。
有关更多用途,请参阅snippets。