首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >JavaFX HBox HGrow优先级

JavaFX HBox HGrow优先级
EN

Stack Overflow用户
提问于 2016-05-12 07:20:54
回答 2查看 8.7K关注 0票数 3

我有一个JavaFX场景,其中包含一个javafx.scene.layout.HBox。这个HBox包含两个子级,一个javafx.scene.control.ComboBox和一个javafx.scene.control.Spinner。说明我的问题的最小FXML文件是:

代码语言:javascript
运行
AI代码解释
复制
<?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宽度。下面的代码代表了我正在做的事情:

代码语言:javascript
运行
AI代码解释
复制
@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控件至少包含一个非常长的选项,所以它几乎分配了所有的空间(因为它的首选宽度要比分配的空间大得多)。我在旋转器控件上所能看到的就是上下箭头。

有人知道我如何在考虑JavaFX的首选宽度之前强制Spinner对象分配空间吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-05-12 08:34:49

您的解决方案可以工作,但是将Spinner对象的Spinner设置为等于首选宽度比较简单。将原始的FXML更改为:

代码语言:javascript
运行
AI代码解释
复制
...
<Spinner fx:id="mySpinner" editable="true" minWidth="-Infinity">
<ComboBox fx:id="myComboBox" HBox.hgrow="ALWAYS" maxWidth="Infinity" /> 
...

这相当于在代码中执行以下操作:

代码语言:javascript
运行
AI代码解释
复制
mySpinner.setMinWidth(Region.USE_PREF_SIZE);

将其他一切保持不变,这些更改中的任何一个都将产生所需的结果。

票数 10
EN

Stack Overflow用户

发布于 2016-05-12 07:33:04

我想出了解决办法。在FXML中,我需要在prefWidth元素上同时指定ComboBoxmaxWidth

代码语言:javascript
运行
AI代码解释
复制
...
<ComboBox fx:id="myComboBox" prefWidth="200" maxWidth="Infinity" />
...

然后,在初始化方法中,我必须添加以下行:

代码语言:javascript
运行
AI代码解释
复制
HBox.setHgrow(myComboBox, Priority.ALWAYS);

这解决了我的问题。现在我看到了另一个问题,那就是Spinner控件的大小远远超过3个字符。然而,由于它是一个非主题,我将对这个悬而未决的问题提出另一个问题。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37191212

复制
相关文章
javafx框架tornadofx入门实战 计算Sha256
[h0p62lu24k.gif] class FxHashingView : View("javafx框架tornadofx入门实战 计算Sha256") { val str0 = stringProperty() val strHash = stringProperty() val fpath = stringProperty() val fileContent = stringProperty() override val root = vbox(5) {
用户6167008
2020/02/14
3.2K0
javafx框架tornadofx入门实战 计算Sha256
javafx框架tornadofx入门 2.hbox,vbox
a21.gif import tornadofx.* class Demo1App : App(Demo1View::class) // 视图类,即控件容器,用于放置各种控件 class Demo1View : View("Demo1") { // 每个视图都必须重写root变量,hbox(4)为水平布局,其中的控件水平排列,4表示其中的控件水平相隔4个像素 override val root = hbox(4) { // 设置宽高 setPrefS
用户6167008
2019/11/27
1.5K0
javafx框架tornadofx入门 2.hbox,vbox
javafx框架tornadofx实战-舒尔特6-增加导出舒尔特方格功能
本节需要导入以下3个类: import javafx.embed.swing.SwingFXUtils import javafx.scene.SnapshotParameters import ja
用户6167008
2020/06/15
8470
javafx框架tornadofx实战-舒尔特6-增加导出舒尔特方格功能
JavaFX入门(四):JavaFX布局(一)
说道GUI编程一定要谈到布局,JavaFX内置了大量的布局控件提供给我们使用。其实,JavaFX的布局控件和界面元素控件都是继承自javafx.scene.layout.Region类。我们这里只看布局控件类。布局控件我们在界面上一般是看不到的,它一个容器用于放置其它可视的界面元素控件。(JavaFX在线API文档:JavaFX8 API Online) JavaFX布局控件的类图如下:
卡尔曼和玻尔兹曼谁曼
2019/01/22
12K1
JavaFX入门(四):JavaFX布局(一)
javafx框架tornadofx入门32_制作图标浏览工具
ikonli-viewer.gif 在build.gradle中添加如下依赖,ikonli=11.5.0: implementation("org.kordamp.ikonli:ikonli-javafx:$ikonli") implementation("org.kordamp.ikonli:ikonli-typicons-pack:$ikonli") implementation("org.kordamp.ikonli:ikonli-material-pack:$ikonli") implementa
用户6167008
2020/05/18
1.5K0
javafx框架tornadofx入门32_制作图标浏览工具
做了个简易浏览器
用tornadofx框架做了个简易浏览器 [bte4onz0ys.png] import javafx.concurrent.Worker import javafx.geometry.Orientation import javafx.scene.control.ListCell import javafx.scene.effect.Effect import javafx.scene.image.Image import javafx.scene.image.ImageView import javaf
用户6167008
2019/10/12
8690
做了个简易浏览器
Using JavaFX UI Controls 12 Table View
原文链接地址:http://docs.oracle.com/javafx/2/ui_controls/table-view.htm#CJAGAAEE
明明如月学长
2021/08/27
11.5K0
JavaFx-Label
效果 #### 代码 import javafx.application.Application; import javafx.scene.Group; import javafx.scene.Sce
shengjk1
2021/03/02
2.8K0
JavaFx-Label
JavaFX入门(五):使用CSS样式美化你的UI控件
CSS(层叠样式表,Cascading Style Sheets)原来是被用来在网页开发中表现HTML元素样式的一种文本标记语言。HTML用来展现内容,CSS被用来设计内容的样式,这样做的好处就是内容和样式相分离。CSS先后被用到Adobe的RIA开发技术Flex,C++的GUI框架Qt以及JavaFX技术上。如果对CSS不是很熟悉,没关系,十分钟入门CSS的一个教程:W3CSchool CSS教程。
卡尔曼和玻尔兹曼谁曼
2019/01/22
10.6K0
JavaFX入门(五):使用CSS样式美化你的UI控件
一颗心到一个圆的演变,javafx框架tornadofx动画演示
采用runAsync和Thread.sleep(10)实现动画效果 import javafx.geometry.Pos import javafx.scene.canvas.GraphicsContext import javafx.scene.control.RadioButton import javafx.scene.paint.Color import javafx.scene.text.FontWeight import tornadofx.* import java.util.* import
用户6167008
2019/09/16
6620
一颗心到一个圆的演变,javafx框架tornadofx动画演示
[or8lllfpxg.gif] import javafx.animation.AnimationTimer import javafx.application.Application import javafx.application.Platform import javafx.geometry.Pos import javafx.scene.canvas.GraphicsContext import javafx.scene.control.RadioButton import javafx.sce
用户6167008
2019/09/04
7780
一颗心到一个圆的演变,javafx框架tornadofx动画演示
Using JavaFX UI Controls 18 超链接
原网页地址:http://docs.oracle.com/javafx/2/ui_controls/hyperlink.htm#CIHGADBG
明明如月学长
2021/08/27
1.6K0
JavaFX-简单的登录界面
效果 代码 import javafx.application.Application; import javafx.event.ActionEvent; import javafx.event.Ev
shengjk1
2021/03/02
2.7K0
JavaFX-简单的登录界面
二维码生成小工具,采用javafx框架tornadofx实现界面开发
[3zqf7zy13o.gif] import javafx.application.Application import javafx.beans.property.SimpleObjectProperty import javafx.embed.swing.SwingFXUtils import javafx.scene.image.Image import javafx.scene.image.WritableImage import tornadofx.* import javax.imageio.
用户6167008
2019/09/11
1.5K0
二维码生成小工具,采用javafx框架tornadofx实现界面开发
JavaFX 简介
本文介绍了JavaFX技术,并基于JavaFX编写了一个简单的图形界面程序。通过使用JavaFX,可以大大简化Java应用程序的开发过程,提高开发效率。同时,JavaFX也提供了一些常用的设计器,如SceneBuilder,可以方便地创建JavaFX应用程序。
乐百川
2018/01/09
5.8K0
JavaFX 简介
javafx框架tornadofx入门实战22_treeview
通过treeview构建文件(夹)树,就像windows文件管理器左侧的一样 treeview.gif import javafx.collections.FXCollections import javafx.collections.ObservableList import javafx.scene.control.TreeItem import javafx.scene.layout.Priority import tornadofx.* import java.io.File import ja
用户6167008
2020/03/25
7780
javafx框架tornadofx入门实战22_treeview
javafx控件的显示效果演示
effect.png import javafx.scene.effect.BlurType import javafx.scene.effect.DropShadow import javafx.scene.image.Image import javafx.scene.paint.Color import javafx.scene.paint.CycleMethod import javafx.scene.paint.LinearGradient import javafx.scene.paint.S
用户6167008
2019/10/12
2.3K0
javafx控件的显示效果演示
在tornadofx中使用javafx并发框架示例
1个枚举javafx.concurrent.Worker.State,代表Worker的不同状态READY,SCHEDULED,RUNNING,SUCCEEDED,CANCELLED,FAILED
用户6167008
2019/10/10
1.4K0
在tornadofx中使用javafx并发框架示例
java parrallel for,Java 8 parallel forEach进度指示
For performance reason I would like to use a forEach loop of a parallel Lambda stream in order to process an instance of a Collection in Java. As this runs in a background Service I would like to use the updateProgress(double,double) method in order to inform the user about the current progress.
全栈程序员站长
2022/09/09
2900
JavaFX入门(二):JavaFX和FXML
在我的JavaFXML系列博客第一篇《JavaFX入门(一):我的第一个JavaFX程序 》中我们用纯Java代码写了一个很简单的JavaFXML程序,这一节中我们使用FXML编写程序界面,然后用Java书写后台逻辑完成上一节中的程序,实现相同的功能。
卡尔曼和玻尔兹曼谁曼
2019/01/22
8.8K0
JavaFX入门(二):JavaFX和FXML

相似问题

Javafx HBox Hgrow(有时)子滚动窗格节点如何获得宽度?

11

可以通过CSS来处理HBox "hgrow“吗?

121

JavaFX -如何使ComboBox hgrow?

32

JavaFX HBox边界

10

JavaFX自定义ListCell HGrow

12
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文