JavaFX - 与VBox类似,但不会自动调整

时间:2014-10-18 22:15:38

标签: java javafx

我在查找与VBox类似的内容时遇到了一些麻烦(将元素设置在彼此之上),但这不会自动调整。我试图创建Gantti图,但如果我创建宽度较小的矩形并将文本添加到VBox中,并且数字宽度大于我的矩形宽度,则会选择数字宽度。当我开始用HBox()将事物放在一起时,它就成了一个问题。

我可以告诉你它的图片:

从图像可以看出,蓝色和黑色矩形之间存在空白,这是由数字宽度高于矩形宽度引起的。我想忽略数字宽度并使矩形完全相邻(尽管将数字保持在中间矩形的中心)。已创建HBox,其值为0,因此没有差距。

我的代码完全用爱沙尼亚语编写,我将提供一个示例代码,它不是来自实际程序,而是具有我已经完成的想法:

        HBox hbox1 = new HBox();
        VBox vbox1 = new VBox();
        Rectangle r1 = new Rectangle(0,0,30,30);
        Rectangle r2 = new Rectangle(0,0,5,50);
        r2.setFill(Color.BLUE);
        Rectangle r3 = new Rectangle(0,0,30,30);
        Text t1 = new Text();
        t1.setText(Integer.toString(222));
        vbox1.getChildren().addAll(r2,t1);
        hbox1.getChildren().addAll(r1,vbox1,r3);
        root.setBottom(hbox1);

提前致谢。

1 个答案:

答案 0 :(得分:1)

其中一种方法可以如下:

将文本节点设置为其父节点无法管理,并手动确定其位置

Text t1 = new Text();
t1.setText(Integer.toString(222));
t1.setManaged(false);
t1.setLayoutX(-t1.getLayoutBounds().getWidth() / 2);
t1.setLayoutY(r2.getHeight() + t1.getLayoutBounds().getHeight());