2

画面上でドラッグできるようにしたいさまざまな長方形ノードを描画しています。

私のコードは現在これです:

  stage = new Stage {
    scene = new Scene(1100, 700) {
      root = new BorderPane {
        center = new Group() {
          fill = Color(0.22, 0.22, 0.22, 1.0)
          children = List(
            new Rectangle with Draggable {
              x = 100.0
              y = 100.0
              width = 80.0
              height = 50.0
              arcWidth = 7.5
              arcHeight = 7.5
              fill = Color(0.15, 0.15, 0.15, 1.0)

              onMousePressed = (event: MouseEvent) => {
                draggablePerformPress(event)
              }

              onMouseDragged = (event: MouseEvent) => {
                draggablePerformDrag(event)
              }
            }
          )
        }
      }.delegate
    }
  }

Draggableトレイトは、draggablePerformPress()メソッドとdraggablePerformDrag()メソッドを提供します。これは、基本的にtranslateXとtranslateYが設定される場所です。

Rectangleノードをクリックしてドラッグしても、移動しません。ただし、BorderPaneを削除し、Groupオブジェクトをシーンのルートにすると、ドラッグは機能します。onMouseイベントがトリガーされていることを確認したので、何らかの理由でBorderPaneがtranslateX / Yをオーバーライドしているに違いありません...理由がわからず、それを防ぐ方法もわかりません。

4

1 に答える 1

2

問題を解決しました。グループをペインに変更することで、コードが機能するようになりました。ただし、このインスタンスでグループを使用できない理由はまだわかりません (ただし、親として BorderPane がない可能性があります)。

于 2012-11-30T02:11:50.117 に答える