-1

我有一个 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...

谢谢,

麦克风

4

0 回答 0