由于Codename One API类似于AWT / Swing。我想获得下面代码的相同结果,但使用Codename One:
private void jTextField1KeyTyped(java.awt.event.KeyEvent evt) {
char c = evt.getKeyChar();
if(!(Character.isDigit(c) || (c == KeyEvent.VK_BACK_SPACE) ||
c == KeyEvent.VK_DELETE)) {
getToolkit().beep();
evt.consume();
}
}
这实际上是一个TextField,它只通过限制输入类型来接受数字。如何在Codename One中制作类似的东西?
OBS:我想限制数字的输入类型。
到目前为止我的代码:
public void keyPressed(final TextField current) {
current.addDataChangedListener((i, ii) -> {
if(isValidInput(current.getText())) {
current.putClientProperty("LastValid", current.getText());
} else {
current.stopEditing();
current.setText((String)current.getClientProperty("LastValid"));
current.startEditingAsync();
}
});
}
public boolean isValidInput(String input){
if(input.contains("a") || input.contains("b") || input.contains("c")
|| input.contains("d") || input.contains("e") || input.contains("f")
|| input.contains("g") || input.contains("h") || input.contains("i")
|| input.contains("j") || input.contains("k") || input.contains("l")
|| input.contains("m") || input.contains("n") || input.contains("o")
|| input.contains("p") || input.contains("q") || input.contains("r")
|| input.contains("s") || input.contains("t") || input.contains("u")
|| input.contains("v") || input.contains("w") || input.contains("x")
|| input.contains("y") || input.contains("z")) {
return false;
}
else {
return true;
}
}
我的isValidInput()方法似乎太长了不是吗?有什么帮助吗?
答案 0 :(得分:1)