2017-08-20 8 views
0

javafxを使用してアプリケーションを作成します。私はチャートのズーム機能を追加したいGridPaneの親のレイアウトに影響を与えずに子ノードを追加する方法

:それはこのようになります。 「ズームイン」ボタンをクリックすると、アプリはfig2になります。しかし、私はそれを達成するための考えがありません。私は変更するとウィンドウのサイズチャートを含め、それがグリッドペインのサイズを変更します、次のようになります。

this

+0

。私はあなたがボタンを押したときに 'Chart'の高さと幅を変更する必要があると思います。 – Sedrick

答えて

0

あなたはズームがgridpaneのレイアウトを検討する必要はありません。これは、変更したいグリッドペインの子に変換を適用することで実現できます。

次の例では、マウスが上にマウスを移動している間ノードをズームする方法を示しています。私は、このズーム状況考えていない

private static Region createRegion(String background) { 
    Region region = new Region(); 
    region.setStyle("-fx-background-color:"+background); 
    region.setPrefSize(300, 100); 
    return region; 
} 

@Override 
public void start(Stage primaryStage) { 
    GridPane gp = new GridPane(); 

    // create background 
    gp.add(createRegion("green"), 0, 0); 
    gp.add(createRegion("dodgerblue"), 0, 1); 

    // create region to be zoomed 
    Region zoomRegion = createRegion("red"); 
    GridPane.setFillWidth(zoomRegion, Boolean.FALSE); 
    GridPane.setFillHeight(zoomRegion, Boolean.FALSE); 
    zoomRegion.setPrefWidth(100); 
    Scale scale = new Scale(); 
    zoomRegion.getTransforms().add(scale); 

    // keep pivot at bottom left corner 
    scale.pivotYProperty().bind(zoomRegion.heightProperty()); 

    zoomRegion.hoverProperty().addListener((observable, oldValue, newValue) -> { 
     // adjust scale when hover state is changed 
     double scaleFactor = newValue ? 1.5 : 1; 
     scale.setX(scaleFactor); 
     scale.setY(scaleFactor); 
    }); 

    gp.add(zoomRegion, 0, 1); 

    Scene scene = new Scene(gp); 

    primaryStage.setScene(scene); 
    primaryStage.show(); 
} 
+0

ありがとう、それはうまく動作します。しかし私は別の質問に会う。グラフを拡大すると、他のグラフと重なり合って表示されます。たとえば、私はズームインして、[that](https://drive.google.com/open?id=0B40SG6a0JJCER0FMRHE3M1h2dlk)のように見えますが、ズームインすると[that](https:// drive)のように見えます。 google.com/open?id=0B40SG6a0JJCEbjVNMDFzYk5XaXc)。ペインスタイル '' -fx-background-color:rgb(255,255,255,1)」を設定しました。 – huangjs

関連する問題