当前位置: 首页 > 知识库问答 >
问题:

javafx vbox和gridpane

赫连华皓
2023-03-14

问题:我混淆了vbox和gridpane。。通常,当您可以使用vbox时,您也可以使用包含1列和n行的gridPane,因此我不确定何时使用每一列和它们之间的差异。

事实:

>

  • 我知道网格窗格有n行和n列。

    我知道vbox只会垂直列出组件。(n行1列)

    困惑:当我想垂直列出40-50个(水平框或其他组件)时,我不知道应该选择哪一个,因为有时我会看到人们将这些组件作为子组件添加到vbox中,而其他人会使用gridpane n(行)x1(列),并且总是动态创建行约束。

    更多信息:在java swing中,我会使用gridBagLayout,因为在我的例子中,它是唯一受益于约束功能的布局,因为这些组件的高度不同。但是,在javafx中,我仍然可以将不同大小的组件放在vbox中,或者使用gridPane,这是java swing中gridbag布局的替代方案。

    总结:

    在swing中gridbaglayout是唯一的解决方案,在javafx vbox或gridpane中(替代swing中的gridbaglayout)?

    ------编辑------

    当我把我的hbox放在一个gridpane单元格中时,盒子里的组件会调整大小,但是,当我把hbox放在一个vbox中时,它们不会。

    例子:

    <?xml version="1.0" encoding="UTF-8"?>
    
    <?import javafx.geometry.Insets?>
    <?import javafx.scene.control.Label?>
    <?import javafx.scene.control.ScrollPane?>
    <?import javafx.scene.control.TextField?>
    <?import javafx.scene.image.Image?>
    <?import javafx.scene.image.ImageView?>
    <?import javafx.scene.layout.HBox?>
    <?import javafx.scene.layout.VBox?>
    
    <VBox maxHeight="1080.0" maxWidth="1920.0" minHeight="600.0" minWidth="800.0" xmlns="http://javafx.com/javafx/8.0.171" xmlns:fx="http://javafx.com/fxml/1">
       <children>
          <ScrollPane hbarPolicy="NEVER">
             <content>
                <VBox>
                   <children>
                      <HBox alignment="CENTER_LEFT" maxHeight="50.0" maxWidth="350.0" minHeight="50.0" minWidth="250.0" spacing="10.0">
                         <children>
                            <Label text="label">
                               <HBox.margin>
                                  <Insets left="10.0" />
                               </HBox.margin>
                            </Label>
                            <TextField />
                            <ImageView fitHeight="24.0" fitWidth="24.0" pickOnBounds="true" preserveRatio="true">
                               <image>
                                  <Image url="" />
                               </image>
                               <HBox.margin>
                                  <Insets right="10.0" />
                               </HBox.margin>
                            </ImageView>
                         </children>
                      </HBox>
                      <HBox alignment="CENTER_LEFT" maxHeight="50.0" maxWidth="350.0" minHeight="50.0" minWidth="250.0" spacing="10.0">
                         <children>
                            <Label text="another label">
                               <HBox.margin>
                                  <Insets left="10.0" />
                               </HBox.margin>
                            </Label>
                            <TextField />
                            <ImageView fitHeight="24.0" fitWidth="24.0" pickOnBounds="true" preserveRatio="true">
                               <image>
                                  <Image url="" />
                               </image>
                               <HBox.margin>
                                  <Insets right="10.0" />
                               </HBox.margin>
                            </ImageView>
                         </children>
                      </HBox>
                   </children>
                </VBox>
             </content>
          </ScrollPane>
       </children>
    </VBox>
    

    为什么这些组件没有根据hbox的当前大小进行相应的调整?

  • 共有1个答案

    邢嘉祯
    2023-03-14

    使用VBox,除非您只需要GridPane提供的功能。为VBox指定的布局参数较少,这使其更易于使用,并减少了潜在的错误源。此外,使用GridPane进行布局的成本更高,这可能会降低经常更改节点大小的应用程序的更新速度。

    不过,有些事情您无法使用VBox实现(至少不是以方便的方式):

    • 在同一个“单元”中放置多个子元素(可以通过将这些子元素包装到另一个布局中来实现)
     类似资料:
    • 问题内容: 关于它们有很多传说。我想知道真相。以下两个示例之间有什么区别? 问题答案: 不确定从何处获得传说,但: 提交按钮 与: IE6将在标记之间提交此按钮的所有文本,其他浏览器将仅提交值。使用可使您在按钮的设计上享有更大的布局自由度。从各种意图和目的看,它乍一看似乎很棒,但是各种浏览器怪癖使它有时很难使用。 在您的示例中,IE6将发送到服务器,而其他大多数浏览器将不发送任何内容。要使其跨浏览

    • 什么区别以及如何正确重写代码?

    • 我试图理解为什么下面两个代码块会产生不同的结果。 代码块1按预期工作,并返回从数据库中查找的提供程序的数组。另一方面,代码块2返回函数数组。在理解promissione.all()和async/await时,我觉得缺少了一些简单的东西。 代码块的差异如下: > 块1:创建许诺函数数组,然后使用map运算符将其包装在异步函数中。 块2:许诺函数的数组被创建为异步函数。因此,不调用map运算符。 如果

    • 问题内容: 我才刚刚开始研究SQL。 我有一个SQL Server 2008r2数据库,它将返回两个字段DocDate和InvValue。我需要将InvValues汇总为今天的MTD和YTD,所以看起来像 我已经做了大量的Google搜寻,并且可以使用SUM&DATEPART进行一项或多项,但是我坚持尝试两者兼而有之。 有人可以给我一些伪代码,以帮助我进一步谷歌。 谢谢@戈登·利诺夫(Gordon

    • 这个示例代码来自一本Java书籍,从墙上的99瓶啤酒到没有啤酒打印出这首歌。问题是,当墙上是1瓶啤酒时,它仍然写着瓶子。我试图通过在末尾添加部分来解决这个问题。但是,它仍然显示1瓶啤酒在墙上,我瓶啤酒在墙上。 我不知道该改变什么来解决这个问题。是否创建另一个while部分? 如果你能给他们一个提示,这样我就可以自己解决它,那也很酷!因为我知道我的实际歌曲输出是在第一个if部分,但我不知道我应该在哪

    • 原文地址:https://cesiumjs.org/tutorials/cesium-and-webpack/ Cesium 和 Webpack Webpack是非常强大非常流行的JavaScript 模块打包工具。它可以让开发人员以一种简单直观的 require 方式去加载各种页面需要的文件,极大的方便了开源人员对代码和资源文件进行结构化设计。当编译的时候,它会跟踪代码依赖性,把所有的模型打包到