我對JavaFX(8),HBox,ComboBox和HGrow有問題。 HGrow不能與ComboBox結合使用。
(INFO:用文本字段(而不是組合框),它按預期工作)JavaFX - 如何製作ComboBox hgrow?
這是我的FXML碼:
<?xml version="1.0" encoding="UTF-8"?>
<?import java.lang.*?>
<?import java.util.*?>
<?import javafx.scene.*?>
<?import javafx.scene.control.*?>
<?import javafx.scene.layout.*?>
<VBox prefHeight="117.0" prefWidth="285.0" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1" fx:controller="de.test.TestController">
<children>
<HBox prefHeight="105.0" prefWidth="196.0" VBox.vgrow="ALWAYS">
<children>
<ComboBox fx:id="fxCboTest" prefHeight="25.0" prefWidth="62.0" HBox.hgrow="ALWAYS" />
</children>
</HBox>
</children>
</VBox>
規範將導致:
我也試過下面的代碼(沒有成功,這段代碼什麼都不做):
HBox.setHgrow(uiController.fxCboTest, Priority.ALWAYS);
有沒有人有一個想法如何使一個組合框HGrow?
'hgrow'不會覆蓋可調整大小的節點的最大寬度,默認情況下會將其設置爲首選大小。在[教程](http://docs.oracle.com/javase/8/javafx/layout-tutorial/size_align.htm#JFXLY133)中有一些關於此的信息,同時也是一個很棒的[在Parleys上的演示文稿](https: //www.parleys.com/tutorial/interface-layout-javafx-2-0)(需要註冊)。 –
那麼,爲什麼在用XML中的TextField替換ComboBox時會起作用呢? – Ben
在默認設置中挖掘一點。 'maxWidth'默認爲兩個標記值'Region.COMPUTED_SIZE',這會導致對'computeMaxWidth(...)'的調用。對於控件,這反過來委託給皮膚實現。挖掘源代碼,'ComboBoxBaseSkin'通過返回首選寬度來解決這個問題; 'TextFieldSkin'只是繼承了默認的'SkinBase'實現,它返回'Double.MAX_VALUE'。因此,默認情況下組合框限於其首選大小;一個文本字段被允許無限增長。底線是他們有不同的默認值。 –