Java fxml-隐藏控件仍在工具栏中保留位置

Java fxml-隐藏控件仍在工具栏中保留位置,java,javafx,fxml,Java,Javafx,Fxml,我正在开发这个记事本,它在FXML中实现了一个拼写检查器。我想在拼写检查器在后台工作时使用加载程序,所以我使用了ProgressIndicator。问题是,当我隐藏ProgressIndicator时,它仍然在原来的位置保留了一点空间 我想要的是隐藏控件以及它所拥有的空间,就像它不存在一样 这是我的FXML代码: <ToolBar onKeyTyped="#onTextChanged" prefHeight="40.0" prefWidth="200.0" BorderPane.alig

我正在开发这个记事本,它在FXML中实现了一个拼写检查器。我想在拼写检查器在后台工作时使用加载程序,所以我使用了
ProgressIndicator
。问题是,当我隐藏
ProgressIndicator
时,它仍然在原来的位置保留了一点空间

我想要的是隐藏控件以及它所拥有的空间,就像它不存在一样

这是我的FXML代码:

<ToolBar onKeyTyped="#onTextChanged" prefHeight="40.0" prefWidth="200.0" BorderPane.alignment="CENTER">
     <items>
        <Button fx:id="btnCorrect" mnemonicParsing="false" onAction="#onCorrectionClicked" >
           <graphic>
              <ImageView fx:id="imgButton" fitHeight="23.0" fitWidth="23.0" pickOnBounds="true" preserveRatio="true">
                 <image>
                    <Image url="@../../img/book.png" />
                 </image>
              </ImageView>
           </graphic>    
        </Button>
        <ProgressIndicator  prefHeight="23.0" prefWidth="23.0" />
        <Separator orientation="VERTICAL" prefHeight="0.0" prefWidth="3.0" />
        ...
     </items>
  </ToolBar>

...

如果通过属性分离节点,则可以释放布局空间-这将强制父节点在没有节点的情况下重新绘制,因为它不再受其控制。别忘了用相同的属性重新附加它,否则它将不再显示

如果通过属性分离节点,则可以释放布局空间-这将强制父节点在没有节点的情况下重新绘制,因为它不再受其控制。别忘了用相同的属性重新附加它,否则它将不会再显示而不是写入

progressIndicator.setVisible(false)

您可以通过编写
toolbar.getItems().add(1,progressIndicator)重新添加它

而不是写

progressIndicator.setVisible(false)


您可以通过编写
toolbar.getItems().add(1,progressIndicator)重新添加它

在删除列表之前,无需检查列表是否包含元素,至少列表是否满足的契约。这取决于您的编码
List.remove
如果读取两次,可能会在第二次抛出异常。但只有当
List.remove
以错误的方式实现时,才会发生这种情况<代码>列表。删除
javadoc第二句话:“如果此列表不包含元素,它将保持不变。”好的。。知道了。。我想它可能会出错,因为元素不存在。我将编辑我的答案。谢谢你把它清理掉。:)在删除元素之前,无需检查列表是否包含元素,至少列表是否满足的契约。这取决于您的编码
List.remove
如果读取两次,可能会在第二次抛出异常。但只有当
List.remove
以错误的方式实现时,才会发生这种情况<代码>列表。删除
javadoc第二句话:“如果此列表不包含元素,它将保持不变。”好的。。知道了。。我想它可能会出错,因为元素不存在。我将编辑我的答案。谢谢你把它清理掉。:)