2017-05-15 9 views
0

イメージマップが表示され、アンカーペインにラップされ、スクロールペインにラップされるこのUIを作成しています。私は左下隅に座標を示すオーバーレイを追加したいと思います。このオーバーレイは、私のビューのサイズを変更したり、マップを左右にスクロールしたりしても、目に見える必要があります。 アンカーペインで制約を使用しようとしましたが、マップを右にスクロールするときに座標フィールドが消えます。 ここでは、階層のビューと、フィールドを残したい位置を確認できます。 scene builder view あなたの答えはThxです。JavaFXシーンビルダ:リサイズ時にスクロールペインを角に残すようにします。

答えて

0
SplitPane 
    └AnchorPane 
    ├ScrollPane 
    │ └... 
    └Label(etc) 

ラベルを重ねるには、上記の構成をお勧めします。これは、ラベルがビューポートから外れているために、ビューポートをズームして変形しやすくするためです。

ScrollBarが見えない場合を考慮すると、ラベルのLayoutYはバインディングを使用して計算する必要があります。

// These can be set in Scene Builder 
anchorPane.getChildren().addAll(scrollPane, label); 
AnchorPane.setTopAnchor(scrollPane, 0.0); 
AnchorPane.setLeftAnchor(scrollPane, 0.0); 
AnchorPane.setRightAnchor(scrollPane, 0.0); 
AnchorPane.setBottomAnchor(scrollPane, 0.0); 
AnchorPane.setLeftAnchor(label, 0.0); 

// Bind LayoutY of Label 
DoubleBinding labelLayoutYBinding = Bindings.createDoubleBinding(
     () -> scrollPane.getViewportBounds().getHeight() - label.getHeight(), 
     label.heightProperty(), 
     scrollPane.viewportBoundsProperty()); 
labelLayoutYBinding.addListener((o, ov, nv) -> label.setLayoutY(nv.doubleValue())); 

は水平ScrollBar場合は、常にシーンBuilderでオフセット固定底がある設定が容易ではなく、結合使って、あなたのアプリケーションに表示されます。

// This can be set in Scene Builder 
AnchorPane.setBottomAnchor(label, 13.0); // Set the fixed value to ease up 
+0

答えの「Bind LayoutY of Label」の部分がわかりませんでしたが(実装しないと試してみました)、うまく動作します。私は制約とアンカーの目的を理解しています。時間がありがとう! –

関連する問題