我有一个public class JdbDateTextField扩展自JTextField,在构造函数中我添加了this.setInputVerifier(new ValidDateOrEmptyVerifier())。
我使用class ValidDateOrEmptyVerifier扩展自InputVerifier来验证输入的格式。
如果输入格式不正确并且用户失去对JdbDateTextField的焦点,我会在ValidDateOrEmptyVerifier中返回false,并且焦点再次回到JdbDateTextField。
当用户从JdbDateTextField切换到另一个textField或按下按钮时,这样就可以工作。如果按下按钮并且输入的格式错误,则不执行任何操作且焦点仍停留在JdbDateTextField。
这正是我想要的。用户只能在输入有效字符串之前无法离开JdbDateTextField。
问题是JdbDateTextField位于JPanel中,该JPanel位于JTabbedPane中,因此我具有带有多个选项卡的GUI。
如果我选择了JdbDateTextField,输入无效数据,然后直接单击其他选项卡,它仍会切换选项卡。所以我能够提供错误的输入。
我的问题是:
是否有一种输入验证方法可以在变为true之前不允许执行任何其他事件?
我使用class ValidDateOrEmptyVerifier扩展自InputVerifier来验证输入的格式。
如果输入格式不正确并且用户失去对JdbDateTextField的焦点,我会在ValidDateOrEmptyVerifier中返回false,并且焦点再次回到JdbDateTextField。
当用户从JdbDateTextField切换到另一个textField或按下按钮时,这样就可以工作。如果按下按钮并且输入的格式错误,则不执行任何操作且焦点仍停留在JdbDateTextField。
这正是我想要的。用户只能在输入有效字符串之前无法离开JdbDateTextField。
问题是JdbDateTextField位于JPanel中,该JPanel位于JTabbedPane中,因此我具有带有多个选项卡的GUI。
如果我选择了JdbDateTextField,输入无效数据,然后直接单击其他选项卡,它仍会切换选项卡。所以我能够提供错误的输入。
我的问题是:
是否有一种输入验证方法可以在变为true之前不允许执行任何其他事件?