2010-08-04 62 views
0

在我的应用程序中,我有一个JTextField,它只允许用户以特定格式输入输入。我有一个方法来检查输入的字段是否有效,如果没有,它会显示一个对话框。发生这种情况后,我希望焦点返回到文本字段,以便用户可以纠正错误并输入适当格式的输入。我试图通过让JTextField调用requestFocus()本身来做到这一点,但这似乎只有一半工作。 JTextField显示闪烁的光标,但我实际上不能输入任何文本,直到我再次单击文本字段。我需要调用另一种方法吗?我在文档中找不到任何其他内容。在警告对话框后返回JTextField进行编辑

+1

在API中它说“使用这种方法是不鼓励的,因为它的行为是依赖于平台的,相反,我们推荐使用'requestFocusInWindow()'”。你试过这个吗? – 2010-08-04 19:47:52

回答

1

这不完全是您要求的解决方案,但您可能需要查看javax.swing.InputVerifier。此对象允许您验证字段的输入,并防止格式不正确时将焦点从焦点移开。我认为这不会让你举出一个解释错误的对话框(虽然它可能 - 尝试它),但它肯定会允许你在'消息区域'中放置一条消息。

你要做的是在JComponent上设置InputVerifier,让它测试内容的有效性;如果它不正确,那么JComponent不会释放焦点(并且可以写入错误消息)。