Jef*_*f G 2 java javafx java-8 javafx-8
我有一个包含a的JavaFX场景javafx.scene.layout.HBox.这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>
Run Code Online (Sandbox Code Playgroud)
在代码中,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);
}
Run Code Online (Sandbox Code Playgroud)
期望的效果是Spinner控件被分配了它的首选宽度,并且ComboBox控件被给予剩余的空间.但是,我所看到的是,由于ComboBox控件包含至少一个非常长的选项,因此几乎所有空间都被分配(因为它的首选宽度远大于分配的空间).我在旋转器控件上看到的只有向上/向下箭头.
有没有人知道如何Spinner在考虑首选宽度之前强制JavaFX为对象分配空间ComboBox?
您的解决方案有效,但minWidth将Spinner对象设置为等于首选宽度更简单.将原始FXML更改为以下内容:
...
<Spinner fx:id="mySpinner" editable="true" minWidth="-Infinity">
<ComboBox fx:id="myComboBox" HBox.hgrow="ALWAYS" maxWidth="Infinity" />
...
Run Code Online (Sandbox Code Playgroud)
这相当于在代码中执行以下操作:
mySpinner.setMinWidth(Region.USE_PREF_SIZE);
Run Code Online (Sandbox Code Playgroud)
将其他所有内容保持不变,这些更改中的任何一个都将产生所需的结果.
| 归档时间: |
|
| 查看次数: |
4288 次 |
| 最近记录: |