我有一个文本字段,我必须在其中验证电子邮件。我的问题是我只想在电子邮件有效时才将焦点从文本字段中移动。我现在使用的是 FocusAdapter。有人可以给我一些其他的想法吗?
问问题
1752 次
3 回答
3
请参阅javax.swing.InputVerifier
,JComponent.setInputVerifier()
但不要忘记 Andrew 的建议。您的工作流程对用户不友好。
这里已经描述过:Java - 使文本框不会失去焦点
于 2013-11-14T11:48:57.330 回答
0
在下一个示例中,如果验证失败,您将无法移动到另一个字段,在requestFocusInWindow()
方法的帮助下完成。试试吧,我认为它可以帮助你:
public class Frame extends JFrame {
private JTextField f;
private JTextField f2;
private JTextField f3;
public Frame() {
f = new JTextField(5);
f2 = new JTextField(5);
f3 = new JTextField(5);
f.addFocusListener(getFocusListener());
getContentPane().setLayout(new GridLayout(3,1,5,5));
getContentPane().add(f);
getContentPane().add(f2);
getContentPane().add(f3);
pack();
setDefaultCloseOperation(EXIT_ON_CLOSE);
setVisible(true);
}
private FocusListener getFocusListener() {
return new FocusAdapter() {
@Override
public void focusLost(FocusEvent arg0) {
super.focusLost(arg0);
if(!validateEmail()){
f.requestFocusInWindow();
}
}
};
}
private boolean validateEmail() {
return f.getText().length()<3;
}
public static void main(String args[]) {
new Frame();
}
}
于 2013-11-14T11:23:59.767 回答
0
尝试这个:
public static boolean isValidEmailAddress(String email)
{
boolean result=true;
try
{
InternetAddress emailAddr=new InternetAddress(email);
emailAddr.validate();
} catch(AddressException ex)
{
result=false;
}
return result;
}
于 2013-11-14T11:16:49.290 回答