我有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);
}
}