我正在使用Sceenbuilder来设计GUI。在TableView中我有9列。除了相同宽度之外的所有列都可以。以下是sceenbuilder的截图:
我只想要列" serial"宽度较小。所以我将调整大小策略设置为CONSTRAINED_RESIZE_POLICY。并且仅禁用" serial"列并将其设置为固定大小(例如50)。
在sceenbuilder预览中它工作正常但是当我编译代码时,我得到一个空列,如下所示:
只有在使用鼠标调整任何列的大小后,它才会自动获得所需的宽度。我的问题是为什么首先要使用鼠标拖动任何列?这就是我不想要的!。
我该如何解决?
答案 0 :(得分:1)
我的程序遇到了同样的问题,我这样解决了。
将TableView
保留为CONSTRAINED_RESIZE_POLICY
。然后,在您想要某个TableColumn
的{{1}}上,将width
,max
和min
尺寸设置为相同的尺寸。这样,它就不会比你的尺寸更大,也不会小。
编辑1:
在玩完它之后,我确定你只需要将pref
的{{1}}设置为你想要的大小,因为这会在桌子上分配适当的空间标题,下面我的例子仍然适用。
以下示例:
Environment.fxml
max width
主。在我的示例中,
TableColumn
文件位于名为<?xml version="1.0" encoding="UTF-8"?> <?import javafx.scene.control.TableColumn?> <?import javafx.scene.control.TableView?> <?import javafx.scene.layout.BorderPane?> <BorderPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="400.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/8.0.91" xmlns:fx="http://javafx.com/fxml/1"> <center> <TableView prefHeight="200.0" prefWidth="200.0" BorderPane.alignment="CENTER"> <columns> <TableColumn prefWidth="75.0" text="First Name" /> <TableColumn prefWidth="75.0" text="Last Name" /> <TableColumn prefWidth="75.0" text="Email Address" /> <TableColumn maxWidth="50.0" minWidth="50.0" prefWidth="50.0" text="Age" /> <TableColumn maxWidth="50.0" minWidth="50.0" prefWidth="50.0" text="Height" /> </columns> <columnResizePolicy> <TableView fx:constant="CONSTRAINED_RESIZE_POLICY" /> </columnResizePolicy> </TableView> </center> </BorderPane>
的目录中。请为此调整代码。
fxml