ユーザーが複数のコンテナを開いて個別の情報を表示できる「ワークスペース」を作成しようとしています。これらは、移動可能でサイズ変更可能である必要があります (ScrollPane など)。
機能の大部分を正常に作成しましたが、実際に問題を引き起こしていることが 1 つあり、問題を特定できません。
次のクラスを作成しました。
public class WorkspaceMoveableSizeablePane extends Pane
public WorkspaceMoveableSizeablePane(Node view) {
getChildren().add(view);
init();
}
private void init() {
...set up the event handlers....
WorkspaceController で既存のペインを次のようにラップして、このペインを使用しようとしました。
@FXML private openSampleWorkspaceNode() {
FXMLLoader loader = new FXMLLoader();
Parent node = loader.load(
this.getClass().getResource("MyView.fxml").openStream());
WorkspaceMoveableSizeablePane dn = new WorkspaceMoveableSizeablePane(node);
pane.getChildren().add(dn);
}
この方法で開くと、ペインのサイズを変更してドラッグできますが、アンカーペインである「ノード」の子は非表示になるのではなく、現在の位置にとどまります。
この問題を修正するために、FXML ファイルの ScrollPane で AnchorPane をラップしました。これにより、サイズ変更が可能になりました。予想どおり、境界外の部分は表示されず、スクロールバーが表示されましたが、ドラッグは停止しました。マウスのドラッグ イベントを追跡しようとしたとき、WorkspaceMoveableSizeablePane のサイズを変更しない限り、実際には発生しませんでした。
//Event Listener for MouseDragged
onMouseDraggedProperty().set(event -> {
System.out.println("You are in the Mouse Dragged Event");
if(isTopSelected){
dragPaneToNewLocation(event);
}else if(isResizingHeight) {
handleResizeHeight(event);
}else if(isResizingWidth) {
handleResizeWidth(event);
}
});
FXML を AnchorPane に戻し、WorkspaceMoveableSizeablePane を次のように変更して、それが役立つかどうかを確認しました。
public class WorkspaceMoveableSizeablePane extends ScrollPane
public WorkspaceMoveableSizeablePane(Node view) {
setContent(view);
init();
}
private void init() {
...set up the event handlers....
以前と同様に、サイズ変更は機能しましたが、ドラッグは機能しませんでした。マウスのドラッグ イベントが発生しませんでした。さらに、私のスクロール ペインは空白で何も表示されませんでした。
そのため、この試みをどのように進めればよいか途方に暮れています。
ScrollPane のイベント ハンドラーに制限はありますか? リッスンする必要がある別のイベントはありますか? ありがとう!!