好吧,我有这样的事情:
public void menu() {
final Form menu = new Form("Menu");
menu.setLayout(new BoxLayout(BoxLayout.Y_AXIS));
Button confirm = new Button("Confirm");
Container creditCardContainer = new Container(new GridLayout(1, 3));
final TextField num1 = new TextField(3);
final TextField num2 = new TextField(3);
final TextField num3 = new TextField(3);
num1.setConstraint(TextArea.NUMERIC);
num2.setConstraint(TextArea.NUMERIC);
num3.setConstraint(TextArea.NUMERIC);
creditCardContainer.addComponent(num1);
creditCardContainer.addComponent(num2);
creditCardContainer.addComponent(num3);
Validator v = new Validator();
v.addConstraint(num1, new LengthConstraint(2));
v.addConstraint(num2, new LengthConstraint(2));
v.addConstraint(num3, new LengthConstraint(4));
automoveToNext(num1, num2);
automoveToNext(num2, num3);
menu.add(creditCardContainer);
menu.add(confirm);
v.addSubmitButtons(confirm);
menu.show();
confirm.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent ev)
{
String getdate = num1.getText() + "/" + num2.getText() + "/" + num3.getText();
System.out.println(getdate);
new StateMachine("/theme");
}
});
}
}
private void automoveToNext(final TextField current, final TextField next) {
current.addDataChangedListener(new DataChangedListener() {
public void dataChanged(int type, int index) {
if(current.getText().length() == 3) {
Display.getInstance().stopEditing(current);
String val = current.getText();
current.setText(val.substring(0, 2));
next.setText(val.substring(2));
Display.getInstance().editString(next, 3, current.getConstraint(), next.getText());
}
}
});
}
请注意,addDataChangeListener
已弃用,因此我必须将其更改为addDataChangedListener
。
我认为我的代码有问题,因为当我在Codename One Simulator中运行它时,它仍允许我输入字母,即使使用下面的代码:
num1.setConstraint(TextArea.NUMERIC);
num2.setConstraint(TextArea.NUMERIC);
num3.setConstraint(TextArea.NUMERIC);
此外,当我完成输入日期后,我的确认按钮也不会突出显示。请有人帮我解决。
Obs:我的约会时间是dd / MM / yyyy
答案 0 :(得分:2)
使用
try {
SimpleDateFormat format = new SimpleDateFormat("dd/MM/yyyy");
Date date = format.parse("");
}catch (ParseException e) {
System.out.println("Wrong format.");
}
检查日期是否为有效格式。
答案 1 :(得分:2)
我们不支持直接字段屏蔽,因为本机文本字段输入不能很好地处理。你有两个我能想到的选择:
使用日期选择器启动一个出色的设备本机UI来选择日期。请注意,它在模拟器中不是很好,但在Android / iOS上看起来不错。
使用3个文本字段,并在输入时自动移至下一个字段,就像我们对此信用卡输入样本所做的那样:http://www.codenameone.com/blog/validation-regex-masking.html