【问题标题】:JavaFX capture events of a disabled buttonJavaFX 捕获禁用按钮的事件
【发布时间】:2016-08-01 06:10:46
【问题描述】:

在我的应用程序中,我有一个多步骤表单向导,其中 除非输入了所有必填字段,否则下一步按钮将被禁用。

某些字段需要额外的验证,例如目录选择器, 我必须检查目录是否存在。

为了简化用户体验,我需要显示“无效目录”工具提示 在目录文本字段旁边。

我想在用户尝试单击/输入禁用时显示工具提示 下一个按钮。

是否可以捕获在 JavaFX 中禁用按钮上执行的事件?

public void nextEntered(Event event) {
    Button button = (Button)event.getSource();
    if(button.isDisabled()){
        validate(currentTab);
    }
}

【问题讨论】:

  • docs.oracle.com/javase/8/javafx/api/javafx/scene/… "禁用的节点不接收鼠标或按键事件。"所以我认为你最好的选择是检查场景中的鼠标位置,如果光标与按钮的边界相交,则生成工具提示。
  • 为什么不在选择后立即验证目录?您可以将 ChangeListener 添加到 InputField 的 TextProperty,或者,如果您使用 JavaFX FileChooser,则直接检查该文件夹是否存在。
  • @el_chupacabra 这就是我所做的,我在场景中添加了一个事件监听器并检查点击的坐标是否在按钮的边界内。我只是想知道是否有更优雅的解决方案,显然没有。谢谢。
  • @Rikan 如果输入的路径无效,我已经在文本字段的更改事件中显示了工具提示。问题是用户可能不会立即注意到它,因为如果用户单击其他地方,工具提示将被删除,并且可能想知道为什么他/她无法进行下一步。也许另一种解决方案是使工具提示持续存在,直到该字段有效。感谢您的建议。

标签: user-interface events javafx


【解决方案1】:

我有一个类似的问题,我想在用户将鼠标悬停在禁用字段上时显示禁用字段值的工具提示。

我最终在禁用的字段上放置了一个空白标签,并在其上附加了一个鼠标事件。

在按钮的情况下,您可以在按钮启用时为虚拟标签提供鼠标透明度,以便用户可以单击该按钮。

(您甚至可以将标签的鼠标透明度属性绑定到按钮的启用属性,但我不确定。)

我知道这是在一年前提出的,但也许它会对其他人有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-21
    • 2012-04-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-21
    相关资源
    最近更新 更多