0

我有VBox一个Dialog/DialogPane和一个子Group(groupB) 包装Group(groupA) of Shapes。groupA 对屏幕来说太大了,所以我向 groupB 添加了一个 Scale 变换来缩小它的大小,并且效果很好。除了窗口似乎认为它Node仍然很大,而且对话框远远超出了屏幕的范围。应用 Scale 后,父边界似乎发生了变化,但布局边界没有变化。如何缩放 aGroup以影响布局?

编辑:我刚刚写了一个关于托管在 BitBucket 上的 Eclipse 项目的简明说明:http: //v.gd/0trUMv

您可以单击切换按钮在大小之间切换。请注意,转换是在添加组之前应用的。切换到大圆圈表明布局正在考虑子节点的完整尺寸。问题是如何在不更改子节点属性的情况下覆盖该行为。期望的行为是让布局边界仅包含小圆圈。

第二次编辑:这是内嵌代码。

import javafx.application.Application;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.input.MouseEvent;
import javafx.scene.layout.VBox;
import javafx.scene.shape.Circle;
import javafx.scene.shape.Shape;
import javafx.scene.transform.Scale;
import javafx.scene.transform.Transform;
import javafx.stage.Stage;

public class Demo extends Application {

    private Scene scene = null;
    private static final String mksml = "make small";
    private static final String mkbig = "make big";
    private static final Transform smallScale = new Scale(0.2, 0.2);

    @Override
    public void start(Stage primaryStage) throws Exception {
        Shape bigGraphic = new Circle(500);
        Group originalBigGroup = new Group(bigGraphic);
        Group transformedGroup = new Group(originalBigGroup);
        transformedGroup.getTransforms().add(smallScale);
        Button xformToggle = new Button(mkbig);
        xformToggle.setOnMouseClicked((MouseEvent mouseEvent) -> {
            switch(xformToggle.getText()) {
            case mkbig:
                transformedGroup.getTransforms().clear();
                xformToggle.setText(mksml);
                break;
            case mksml:
                transformedGroup.getTransforms().add(smallScale);
                xformToggle.setText(mkbig);
            }
        });
        VBox layout = new VBox(xformToggle, transformedGroup);
        scene = new Scene(layout);
        primaryStage.setScene(scene);
        primaryStage.show();
    }

    public static void main(String[] args) {
        Application.launch(args);
    }
}
4

1 回答 1

0

像这样,Group 不会定位或组织它的子节点,因此如果它以它开始的方式1000*1000结束,1000*1000除非你明确地减少它。因此VBox保持不变,你得到相同的尺寸

合身吗?

于 2015-10-17T12:33:01.410 回答