【问题标题】:JavaFX - something similar like VBox but what wouldn't autofitJavaFX - 类似于 VBox 但不会自动调整的东西
【发布时间】:2023-03-30 21:55:01
【问题描述】:

我很难找到类似于VBox 的东西(将元素设置在彼此之上),但这不会自动调整。我正在尝试创建甘蒂图,但如果我创建宽度较小的矩形并将文本添加到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);

提前致谢。

【问题讨论】:

    标签: java javafx


    【解决方案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());
    

    【讨论】:

      猜你喜欢
      • 2021-06-06
      • 2019-03-17
      • 1970-01-01
      • 1970-01-01
      • 2020-09-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多