我在移动时试图显示滑块的值。
这是我迄今为止尝试过的但是没有用的:
public class ControlsController extends BaseController{
@FXML
private Slider slAcceleration;
@FXML
public void slAccelerationEventHandler(DragEvent event){
System.out.println(slAcceleration.getValue());
}
}
我的.fxml
代码:
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.control.Button?>
<?import javafx.scene.control.Label?>
<?import javafx.scene.control.Slider?>
<?import javafx.scene.layout.Pane?>
<Pane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="250.0" prefWidth="300.0" style="-fx-background-color: bdc3ff;" xmlns="http://javafx.com/javafx/8.0.102" xmlns:fx="http://javafx.com/fxml/1" fx:controller="controller.ControlsController">
<children>
<Label id="lbAcceleration" layoutX="14.0" layoutY="125.0" text="Versnelling simulatie x60" />
<Slider id="slAcceleration" blockIncrement="1.0" layoutX="14.0" layoutY="151.0" max="600.0" min="1.0" onDragDone="#slAccelerationEventHandler" prefHeight="14.0" prefWidth="280.0" value="60.0" />
</children>
</Pane>
如果我发布更多信息,请告诉我。任何帮助都会受到极大的关注!
答案 0 :(得分:1)
startDragAndDrop()
事件是“拖放”系统的一部分。它在完全拖放处理期间调用(在应用程序中或应用程序之间移动数据),只有在您之前在某个节点上调用initialize
时才会调用。
这里需要观察滑块的valueProperty()
。没有为此生成事件,因此在控制器的public class ControlsController extends BaseController{
@FXML
private Slider slAcceleration;
public void initialize() {
slAcceleration.valueProperty().addListener((obs, oldValue, newValue) -> {
System.out.println(newValue.doubleValue());
});
}
}
方法中注册侦听器:
id
请注意,您的FXML文件中也有错误:您使用的是fx:id
而不是@FXML
。您需要解决此问题,否则控制器中的a = "xyaabbbccccdefww"
b = "xxxxyyyyabklmopq"
longest(a, b) -> "abcdefklmopqwxy"
function longest(s1, s2) {
var sortedString = '';
var a = s1.split();
var b = s2.split();
for (i=0; i < a.length; i++) {
if (!sortedString.includes(a[i])) {
sortedString.concat(a[i]);
}
}
for (j=0; j < b.length; j++) {
if (!sortedString.includes(b[j])) {
sortedString.concat(b[j]);
}
}
return sortedString.sort();
}
注入字段将不会被初始化。
答案 1 :(得分:0)
因为那不是您所需要的。属性onValueChange
可以解决问题,需要为处理程序添加ChangeListener<Number>
签名(Double
也可以):
<Slider onValueChange="#doStuff"/>
@FXML
private void doStuff(ObservableValue<Number> ovn, Number before, Number after) {
System.out.println(before+" "+after);
}