为什么我的JavaFX滑块事件没有触发?

为什么我的JavaFX滑块事件没有触发?,java,events,javafx,Java,Events,Javafx,我试图在移动滑块时显示滑块的值 这是我迄今为止尝试过但不起作用的方法: public class ControlsController extends BaseController{ @FXML private Slider slAcceleration; @FXML public void slAccelerationEventHandler(DragEvent event){ System.out.println(slAcceleration

我试图在移动滑块时显示滑块的值

这是我迄今为止尝试过但不起作用的方法:

public class ControlsController extends BaseController{
    @FXML
    private Slider slAcceleration;

    @FXML
    public void slAccelerationEventHandler(DragEvent event){
        System.out.println(slAcceleration.getValue());
    }
}
和my.fxml代码:

如果我需要发布更多信息,请告诉我。任何帮助都将非常感激

DragOne事件是拖放系统的一部分。在应用程序中或应用程序之间移动数据的完全拖放处理过程中调用该函数,并且仅当您以前在某个节点上调用过startDragAndDrop时才会调用该函数

这里需要的是观察滑块的运动。没有为此生成事件,因此在控制器的初始化方法中注册侦听器:


注意:您的FXML文件中也有错误:您使用的是id而不是fx:id。您需要修复此问题,否则控制器中的@FXML注入字段将无法初始化。

因为您不需要此字段。属性onValueChange起到了作用,处理程序Double也需要ChangeListener签名:

<Slider onValueChange="#doStuff"/>

@FXML
private void doStuff(ObservableValue<Number> ovn, Number before, Number after) {
    System.out.println(before+" "+after);
}

这里有什么不起作用?@azro It只是没有在控制台中显示消息。更改为:System.out.printlnhere+slAcceleration.getValue;我只是想知道它是否会进入方法中谢谢你,詹姆斯!我知道id和fx:id之间的区别,我刚刚发现了这一点。
public class ControlsController extends BaseController{
    @FXML
    private Slider slAcceleration;

    public void initialize() {
        slAcceleration.valueProperty().addListener((obs, oldValue, newValue) -> {
            System.out.println(newValue.doubleValue());
        });
    }
}
<Slider onValueChange="#doStuff"/>

@FXML
private void doStuff(ObservableValue<Number> ovn, Number before, Number after) {
    System.out.println(before+" "+after);
}