【问题标题】:Rotated Objects inside a VBox (or HBox)VBox(或HBox)内的旋转对象
【发布时间】:2014-05-28 12:57:17
【问题描述】:

我有一个将旋转对象放入 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 内的文本 整个 Group 被旋转并添加到 VBox (在这个例子中,我需要橙色框和文本一样旋转)

关于如何让它发挥作用的任何想法? 罗伯特

【问题讨论】:

    标签: java rotation javafx vbox hbox


    【解决方案1】:

    将旋转的节点包装在未旋转的组中。

    vbox.getChildren().add(new Group(g));
    

    这个工作的原因来自Group javadoc

    如果直接在此组的子级上设置变换和效果,则这些将包含在此组的布局边界中。

    如果您希望 VBox 项目之间有额外的固定空间,您可以按照 Rohan 的回答中的建议使用 vbox.setSpacing

    【讨论】:

      【解决方案2】:

      我认为最好的方法是设置间距。

      vbox.setSpacing(double arg0);
      

      如果需要,您还可以调整循环中的间距以获得一些动态效果。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-09-24
        • 1970-01-01
        • 1970-01-01
        • 2023-04-01
        • 1970-01-01
        • 2013-07-15
        • 2012-09-20
        相关资源
        最近更新 更多