Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/402.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java VBox(或HBox)内旋转的对象_Java_Rotation_Javafx_Vbox_Hbox - Fatal编程技术网

Java VBox(或HBox)内旋转的对象

Java VBox(或HBox)内旋转的对象,java,rotation,javafx,vbox,hbox,Java,Rotation,Javafx,Vbox,Hbox,我有一个程序,它将旋转的对象放在VBox中。 我希望VBox根据旋转调整其垂直大小。在以下示例中,文本对象不应接触: 但他们确实如此。 生成此代码的代码如下所示: package metcarob.com.soavisualise; import javafx.application.Application; import javafx.scene.Group; import javafx.scene.Scene; import javafx.scene.layout.StackPane;

我有一个程序,它将旋转的对象放在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);
}   
}
package metcarob.com.soavisialise;
导入javafx.application.application;
导入javafx.scene.Group;
导入javafx.scene.scene;
导入javafx.scene.layout.StackPane;
导入javafx.scene.layout.VBox;
导入javafx.scene.text.text;
导入javafx.stage.stage;
公共类TestAppForRotate扩展了应用程序{
@凌驾
public void start(final Stage primaryStage)引发异常{
组根=新组();
场景=新场景(根);
初级阶段。场景(场景);
VBox VBox=新的VBox();
root.getChildren().add(vbox);
g组=null;
文本t=null;
StackPane p=null;

对于(int c=0;c我认为最好的方法是设置间距

vbox.setSpacing(double arg0);

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

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

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

这项工作的原因在于:

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

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