我有一个 ActionListener 分配给 JavaFX 中的一个两窗格 SplitPane 控件(只有一个分隔器),我像这样分配侦听器:
splitPane.getDividers().get(0).positionProperty().addListener((o,oldValue,newValue) -> {
savePosition(newValue);
});
但问题是该事件会随着场景中的任何更改而触发,例如向其中一个窗格添加控件,甚至只是调整窗口大小。
我需要做的是,只有当用户实际更改分隔符位置时,才会触发该事件中的代码。
我尝试创建一个布尔值,当用户像这样单击鼠标时会设置它:
splitPane.setOnMousePressed(e -> {
mouseClicked = true;
});
splitPane.setOnMouseReleased(e -> {
mouseClicked = false;
});
但这不起作用,因为当用户单击分隔线时该事件不会触发。我什至为场景本身尝试了相同的方法,但是即使在场景级别,当用户单击分隔线时,该事件也不会触发。
我在 Google 上进行了广泛搜索,并在 StackOverflow 上搜索了任何相关问题,但没有找到。
有什么方法可以检测用户何时更改 SplitPane 分隔线的位置?或者有什么方法可以知道用户是否只是点击了分隔线本身?如果是这样,我可以将该检测应用于 ActionEvent。
如果这很重要,我正在使用 Java 17.0.2...
谢谢,
麦克风