当前位置: 首页 > 知识库问答 >
问题:

Java摇摆JTextField setInputVeriator保持关注TextField

魏凯捷
2023-03-14

我有一个公共类JdbDateTextField扩展JTextField,在构造函数中我添加了this.setInputVerimer(new ValidDateOremptyVerimer());

我使用类ValidDataOremptyVerifier extends InputVerifier来验证输入的格式。

如果输入的格式错误,并且用户丢失了JdbDateTextField的焦点,我将在ValidDateOrentTextField中返回false,并且焦点将再次获得到JdbDateTextField

如果用户从JdbDateTextField切换到另一个文本字段或按下Button,则此操作有效。如果按下按钮,并且输入格式错误,则不执行该按钮的操作,并且焦点仍然在JdbDateTextField处。

这正是我想要的。在输入有效字符串之前,用户不能离开JdbDateTextField

问题是,jdbatetextfield在一个JPanel中,它在一个JTabbedPane中,所以我有一个带有多个选项卡的GUI。

如果我选择了JdbDateTextField,输入一个无效的输入,然后直接单击另一个选项卡,它仍然会切换该选项卡。所以我能提供一个错误的输入。

我的问题是:

是否有一种方法可以执行输入验证,在其为真之前不允许执行任何其他事件

共有2个答案

上官自明
2023-03-14

我希望我可以这样回答:

上述解决方案适用于JTabbedPane

但我仍然可以选择其他GUI元素。

对于每个Person ID,我在JTabbedPane中显示其他Birthdate值,如果ValidDateOremptyVerifier返回false,我仍然可以切换到另一个Person ID

那么有没有办法禁止主框架中的所有事件,直到ValidDateOremptyVerifier返回true

所以基本上我想要的是用户只有在输入有效日期或字段为空时才能退出“Birthdate”JdbDateTextField

穆招
2023-03-14

我能想到的最佳解决方案是为JTabbedPane分配一个自定义选择模型,该模型拒绝允许更改选项卡,除非当前的InputVerifier成功:

int index = tabbedPane.getSelectedIndex();

tabbedPane.setModel(new DefaultSingleSelectionModel() {
    @Override
    public void setSelectedIndex(int index) {
        Component focusOwner =
            FocusManager.getCurrentManager().getFocusOwner();

        if (focusOwner instanceof JComponent) {
            JComponent c = (JComponent) focusOwner;
            InputVerifier verifier = c.getInputVerifier();
            if (verifier != null && !verifier.shouldYieldFocus(c)) {
                return;
            }
        }

        super.setSelectedIndex(index);
    }
});

tabbedPane.setSelectedIndex(index);
 类似资料:
  • 例: “foo”和“bar”可以是任何字符串键,但它们在键集中应该是唯一的。 我知道,使用Swagger,我可以定义一个对象数组,但这给出了一个不同的API,因为那时我们将拥有如下内容: 我已经阅读了“开放API规范”-“添加地图数据类型支持#38”页面。据我了解,它推荐使用additionalProperties,但似乎并没有回答我的需求(或者说与我使用的Swagger UI 2.1.4不兼容)

  • Swagger注释可以与发音和maven一起使用吗?我正在尝试添加swagger注释,但它不起作用,而是拾取默认的java doc注释。 尝试将scan或resourcePackage等参数添加到存在于swagger BaseConfig类中的expertion . XML的Swagger标记,但它似乎不支持这些参数。 pom中定义的依赖关系: Expuncate:groupId:com.webc

  • 问题内容: 我目前正在尝试将我们的应用程序从Java 8迁移到Java 10,并在几个月后将迁移到Java 11。 我们有一个遗留系统,它使用了一些API,我猜它们将被删除或将被删除。我们正在使用ant脚本(1.10.1)进行应用程序编译。 以下是构建我们的应用程序的部分: 在编译期间,移至Java 10后,与Java Swing相关的错误很少(还是较旧的错误,但必须忍受)。由于我仍不完全了解Ja

  • 嗯,这是一个非常新的提示。我声明要在window builder的帮助下自己编写GUI应用程序的代码,我已经决定停止使用netbeans,因为我在这里读到一些人说这很好。你可能认为我没有调查,但相信我,我做了功课。。。 我尝试了甲骨文所说的方式: > 公共类MyClass实现ActionListener{ someComponent。addActionListener(instanceOfMyCl

  • 我有一个java项目(tomcat webapp)和一些REST Api。我想为他们生成大摇大摆的文档。我从本教程(github)开始。我没有maven我们使用蚂蚁任务。我加入了swagger-annotations-1.5.0。jar和所有随swagger jaxrs jar 1.5.0版本附带的jar(如果有用的话,我可以包括一个完整的列表),我已经注释了一些方法,我有一个如下的配置类: }

  • 我正在使用Spring Boot2开发一个REST api。我在build.gradle文件中为Swagger2和Swagger-UI添加了SpringFox依赖项,如下所示: 不幸的是,像@enableswagger2这样的大摇大摆的注释似乎没有被识别出来。我该怎么办?