首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将VBox宽度设置为javafx中较小的子级的宽度

将VBox宽度设置为javafx中较小的子级的宽度
EN

Stack Overflow用户
提问于 2018-04-21 14:59:41
回答 1查看 1.7K关注 0票数 1

我正在试图找出如何得到一个VBox,使首选的宽度是较小的孩子的宽度?实际上,我希望第二个孩子是设置宽度的决定性因素,然后第一个孩子将被调整成适合VBox的大小,因为它可以将文本包装在里面。

例如,我有这个VBox,它包含两个HBox子级,每个子HBox中都有一个标签。

VBox大小调整到所有儿童

但是我想要的是让VBox按照更小的孩子来调整自己的大小:

VBox尺寸为较小的儿童

VBox将为对话框设置场景,我的例程将由其他人通过函数提供给第二个对话框,我希望第二个对话框设置对话框的宽度,而不是第一个,因为第一个对话框可能会很长。

我不想用固定的数字来设置宽度,这就是为什么我会遇到这个问题。

我可以只使用XML中的参数来完成这个任务吗?或者我需要使用一些Java代码调用来将事情绑定到一起吗?

我一直在SceneBuilder玩这个,但没有成功。fxml如下所示:

代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-8"?>

<?import javafx.geometry.Insets?>
<?import javafx.scene.control.Label?>
<?import javafx.scene.layout.HBox?>
<?import javafx.scene.layout.VBox?>


<VBox minHeight="-Infinity" minWidth="0.0" spacing="2.0" style="-fx-border-color: yellow;" xmlns="http://javafx.com/javafx/8.0.60" xmlns:fx="http://javafx.com/fxml/1">
   <children>
      <HBox id="box1" style="-fx-border-color: blue;">
         <children>
            <Label text="Text label one is really long" wrapText="true" />
         </children>
      </HBox>
      <HBox id="box2" style="-fx-border-color: red;">
         <children>
            <Label text="Text label two" />
         </children>
      </HBox>
   </children>
   <padding>
      <Insets bottom="5.0" left="5.0" right="5.0" top="5.0" />
   </padding>
</VBox>
EN

回答 1

Stack Overflow用户

发布于 2018-04-21 15:06:30

box1的首选宽度绑定到box2的实际宽度。您可以在FXML中这样做(虽然在场景生成器中可能不是这样),但是请注意,您需要给box2一个fx:id (而不是id)来使它工作:

代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-8"?>

<?import javafx.geometry.Insets?>
<?import javafx.scene.control.Label?>
<?import javafx.scene.layout.HBox?>
<?import javafx.scene.layout.VBox?>


<VBox minHeight="-Infinity" minWidth="0.0" spacing="2.0" style="-fx-border-color: yellow;" xmlns="http://javafx.com/javafx/8.0.60" xmlns:fx="http://javafx.com/fxml/1">
   <children>
      <HBox id="box1" style="-fx-border-color: blue;" prefWidth="${box2.width}" >
         <children>
            <Label text="Text label one is really long" wrapText="true" />
         </children>
      </HBox>
      <HBox fx:id="box2" style="-fx-border-color: red;">
         <children>
            <Label text="Text label two" />
         </children>
      </HBox>
   </children>
   <padding>
      <Insets bottom="5.0" left="5.0" right="5.0" top="5.0" />
   </padding>
</VBox>

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49957055

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档