【发布时间】:2016-09-08 12:59:49
【问题描述】:
我有一个包含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 对象分配空间?
【问题讨论】:
-
minWidth 没有帮助?
-
我不知道为
minWidth输入什么,因为它取决于所使用的字体。我观察到 RedHat Linux 使用比 Windows 7 大得多的默认字体。在事先不知道字体(或用户可配置的设置,如 Windows 中的字体大小)的情况下,很难确定制作minWidth所需的幻数有用。 -
可以通过
spinner.getEditor().getFont()获取Spinner的字体
标签: java javafx java-8 javafx-8