[英]Rotated Objects inside a VBox (or HBox)
我有一个将旋转对象放入 VBox 的程序短片。 我希望 VBox 根据旋转调整它的垂直大小。 在以下示例中,文本对象不应接触:
但他们确实如此。 生成它的代码如下:
package metcarob.com.soavisualise;
import javafx.application.Application;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.layout.StackPane;
import javafx.scene.layout.VBox;
import javafx.scene.text.Text;
import javafx.stage.Stage;
public class TestAppForRotate extends Application {
@Override
public void start(final Stage primaryStage) throws Exception {
Group root = new Group();
Scene scene = new Scene(root);
primaryStage.setScene(scene);
VBox vbox = new VBox();
root.getChildren().add(vbox);
Group g = null;
Text t = null;
StackPane p = null;
for (int c=0;c<3;c++) {
g = new Group();
t = new Text("Test " + Integer.toString(c));
p = new StackPane();
p.getChildren().add(t);
p.setStyle("-fx-background-color: white; -fx-border-color: orange; -fx-border-width: 3;");
g.getChildren().add(p);
g.setRotate(c * 35);
vbox.getChildren().add(g);
}
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
在这个配置中,我在 StackPane 里面有 Text 里面 Group 整个 Group 被旋转并添加到 VBox (在这个例子中,我需要橙色框和文本一起旋转)
关于如何让它发挥作用的任何想法? 罗伯特
将旋转的节点包裹在未旋转的组中。
vbox.getChildren().add(new Group(g));
这样做的原因来自Group javadoc :
如果直接在该组的子项上设置转换和效果,则这些将包含在该组的布局边界中。
如果您希望 VBox 项之间有额外的固定空间,您可以按照 Rohan 的回答中的建议使用vbox.setSpacing 。
我认为最好的方法是设置间距。
vbox.setSpacing(double arg0);
如果需要,您还可以调整循环中的间距以获得一些动态效果。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.