-1

JavaFX で 2 ペインの SplitPane コントロールに ActionListener を割り当て (仕切りは 1 つだけ)、次のようにリスナーを割り当てます。

splitPane.getDividers().get(0).positionProperty().addListener((o,oldValue,newValue) -> {
      savePosition(newValue);
});

しかし、問題は、ペインの 1 つにコントロールを追加したり、ウィンドウのサイズを変更したりするなど、シーンで行われたほぼすべての変更でこのイベントが発生することです。

私がする必要があるのは、ユーザーが実際に仕切りの位置を変更しているときにのみ、そのイベントのコードを起動することです。

ユーザーが次のようにマウスをクリックすると設定されるブール値を作成しようとしました:

splitPane.setOnMousePressed(e -> {
    mouseClicked = true;
});

splitPane.setOnMouseReleased(e -> {
    mouseClicked = false;
});

しかし、ユーザーが仕切りをクリックしたときにそのイベントが発生しないため、それは機能しませんでした。シーン自体に対しても同じ方法を試しましたが、ユーザーがシーン レベルでも仕切りをクリックしても、そのイベントは発生しません。

私は広範囲にグーグルで検索し、関連する質問についてStackOverflowを検索しましたが、何も見つかりませんでした.

ユーザーが SplitPane 分割線の位置を変更したことを検出する方法はありますか? または、ユーザーが仕切り自体をクリックしただけかどうかを知る方法はありますか? もしそうなら、その検出を ActionEvent に組み込むことができます。

それが重要な場合、私はJava 17.0.2を使用しています...

ありがとうございました、

マイク

4

0 に答える 0