Api Javafx控件的哪个事件?

Api Javafx控件的哪个事件?,api,javafx,event-handling,fxml,Api,Javafx,Event Handling,Fxml,在JavaFX和FXML中为滑块实现事件处理程序时,我无法确定滑块触发的事件类型。我搜索了Javadoc并用谷歌搜索了它,但最终通过反复试验解决了这个问题:鼠标释放的事件可以跟踪用户何时更改了滑块的值(我的第一个猜测是类似于swing中的ValueChangeListener或ChangeListener) 问题:我如何知道哪个事件侦听器/处理程序与哪个控件一起使用?如果API/Javadoc没有说明滑块值更改最好由鼠标事件处理,那么在何处查找该信息?您可以向某些父布局(或场景)添加超级类事件(

在JavaFX和FXML中为滑块实现事件处理程序时,我无法确定滑块触发的事件类型。我搜索了Javadoc并用谷歌搜索了它,但最终通过反复试验解决了这个问题:鼠标释放的事件可以跟踪用户何时更改了滑块的值(我的第一个猜测是类似于swing中的ValueChangeListener或ChangeListener)


问题:我如何知道哪个事件侦听器/处理程序与哪个控件一起使用?如果API/Javadoc没有说明滑块值更改最好由鼠标事件处理,那么在何处查找该信息?

您可以向某些父布局(或场景)添加超级类事件(即最顶级的
事件,而不是像
ActionEvent
这样的特定事件)过滤器(不是处理程序)观察什么样的具体事件在传播


另一个选项是简单地阅读源代码:)

JavaFX用属性替换了大多数值事件,因为它们更加灵活。因此,当您无法跟踪组件的当前值时,最简单的方法是在滑块的valueProperty中添加一个ChangeListener:

slider.valueProperty().addListener( ( ov, oldValue, newValue ) ->
{
  System.out.println( "OldValue = " + oldValue + " newValue = " + newValue );
} );

有关示例的更详细解释,请看。

您可以直接收听中的更改。除了滑块上的value属性外,还有一个ValueChangeing属性,本问答中讨论了该属性:源代码中没有关于事件类型的内容。从@crusam的回答中,我了解到我更愿意阅读一些关于java.swing和javafx之间差异的文档(这是一个公平的交易)。@crusam的回答是完全正确的。JavaFX中的节点有
property
s,您可以添加更改侦听器或绑定到其他节点的属性,但也有从节点作为源激发到某个目标节点的事件。对于后者,您可以附加一个事件过滤器或处理程序(您也可能更愿意阅读两者的区别)。