- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个包含 javafx.scene.layout.HBox
的 JavaFX 场景。此 HBox
包含两个子项,一个 javafx.scene.control.ComboBox
后跟一个 javafx.scene.control.Spinner
。说明我的问题的最小 FXML 文件是:
<?import javafx.scene.control.ComboBox?>
<?import javafx.scene.control.Spinner?>
<?import javafx.scene.control.SpinnerValueFactory.IntegerSpinnerValueFactory?>
<?import javafx.scene.layout.HBox?>
<HBox xmlns="http://javafx.com/javafx/8.0.65"
xmlns:fx="http://javafx.com/fxml/1">
<children>
<ComboBox fx:id="myComboBox" />
<Spinner fx:id="mySpinner" editable="true">
<valueFactory>
<SpinnerValueFactory.IntegerSpinnerValueFactory
min="0" max="999" initialValue="0" />
</valueFactory>
</Spinner>
</children>
</HBox>
在代码中,ComboBox
正在填充非常长(以字符为单位)的字符串。我还指定了 Spinner 所需的宽度。以下代码代表了我正在做的事情:
@FXML
private ComboBox<String> myComboBox;
@FXML
private Spinner<Integer> mySpinner;
@Override
public void initialize(URL location, ResourceBundle resources) {
myComboBox.getItems().setAll(
"Some very long string that takes up a very large portion" +
" of the screen. You can probably see where this is going.");
mySpinner.getEditor().setPrefColumnCount(3);
}
所需的效果是为 Spinner
控件分配其首选宽度,并为 ComboBox
控件分配剩余空间。然而,我看到的是,由于 ComboBox
控件至少包含一个非常长的选项,因此它分配了几乎所有空间(因为它的首选宽度远大于分配的空间)。我在微调器控件上只能看到向上/向下箭头。
有谁知道如何在考虑 ComboBox
的首选宽度之前强制 JavaFX 为 Spinner
对象分配空间?
最佳答案
您的解决方案有效,但将 Spinner
对象的 minWidth
设置为等于首选宽度会更简单。将原始 FXML 更改为以下内容:
...
<Spinner fx:id="mySpinner" editable="true" minWidth="-Infinity">
<ComboBox fx:id="myComboBox" HBox.hgrow="ALWAYS" maxWidth="Infinity" />
...
这相当于在代码中执行以下操作:
mySpinner.setMinWidth(Region.USE_PREF_SIZE);
保持其他一切不变,其中任何一项更改都会产生所需的结果。
关于JavaFX HBox HGrow 优先级,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37191212/
我有一个包含 javafx.scene.layout.HBox 的 JavaFX 场景。此 HBox 包含两个子项,一个 javafx.scene.control.ComboBox 后跟一个 java
我对 JavaFX(8)、HBox、ComboBox 和 HGrow 有问题。 HGrow 不能与 ComboBox 结合使用。 (信息:使用 TextField (而不是 ComboBox),它按预
我目前有一个包含在 HBox 节点中的滚动 Pane ,并使用 HBox.setHgrow(scrollpane, Priority.SOMETIMES); 设置 此外,我还通过使用手动设置了此滚动
我是一名优秀的程序员,十分优秀!