Javafx 控件的哪个事件?
Which event for a Javafx control?
在 JavaFX 和 FXML 中为滑块实现事件处理程序时,我无法确定滑块触发的事件类型。我搜索了 Javadoc 并用谷歌搜索了它,但最终通过反复试验解决了它:鼠标释放事件可以跟踪用户何时更改了滑块的值(我的第一个猜测是某种 ValueChangeListener 或 ChangeListener,就像在 swing 中) .
问题:我如何知道哪个事件 listener/handler 与哪个控件相关?如果 API/Javadoc 没有说明滑块值的变化最好由鼠标事件处理,那么在哪里可以找到该信息?
您可以添加一个超级 class 事件(即最顶层的 class Event
,而不是像 ActionEvent
这样的特定事件)过滤器(不是处理程序)到某些父布局(或场景)并观察传播的具体事件类型。
另一种选择是简单地阅读源代码:)
JavaFX 将大多数值事件替换为属性,因为它们更加灵活。因此,当您不想跟踪组件的当前值时,最简单的方法是在您的案例中将 ChangeListener 添加到 Slider 的 valueProperty:
slider.valueProperty().addListener( ( ov, oldValue, newValue ) ->
{
System.out.println( "OldValue = " + oldValue + " newValue = " + newValue );
} );
有关示例的更详细说明,请查看 here。
在 JavaFX 和 FXML 中为滑块实现事件处理程序时,我无法确定滑块触发的事件类型。我搜索了 Javadoc 并用谷歌搜索了它,但最终通过反复试验解决了它:鼠标释放事件可以跟踪用户何时更改了滑块的值(我的第一个猜测是某种 ValueChangeListener 或 ChangeListener,就像在 swing 中) .
问题:我如何知道哪个事件 listener/handler 与哪个控件相关?如果 API/Javadoc 没有说明滑块值的变化最好由鼠标事件处理,那么在哪里可以找到该信息?
您可以添加一个超级 class 事件(即最顶层的 class Event
,而不是像 ActionEvent
这样的特定事件)过滤器(不是处理程序)到某些父布局(或场景)并观察传播的具体事件类型。
另一种选择是简单地阅读源代码:)
JavaFX 将大多数值事件替换为属性,因为它们更加灵活。因此,当您不想跟踪组件的当前值时,最简单的方法是在您的案例中将 ChangeListener 添加到 Slider 的 valueProperty:
slider.valueProperty().addListener( ( ov, oldValue, newValue ) ->
{
System.out.println( "OldValue = " + oldValue + " newValue = " + newValue );
} );
有关示例的更详细说明,请查看 here。