更新:最小的,完整的和可驗證的例子JavaFX的:constrained_resize_policy不會應用到的TableView
在我的應用程序,我處理很多表視圖,並在幾乎他們每個使用constrained_resize_policy
。但只有一例,我不明白爲什麼它不適用。即使沒有指定pref/min/maxWidth,我的所有列也會縮小。
的相關FXML
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.geometry.*?>
<?import java.net.*?>
<?import javafx.geometry.* ?>
<?import java.lang.*?>
<?import java.util.*?>
<?import java.net.* ?>
<?import javafx.scene.*?>
<?import javafx.scene.control.*?>
<?import javafx.scene.layout.*?>
<VBox prefHeight="800.0" prefWidth="800.0" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1" fx:controller="fxtests.FXMLController">
<children>
<TableView fx:id="regiTable" styleClass="content">
<columns>
<TableColumn fx:id="nameCol" editable="false" resizable="false" styleClass="regimen-column" text="Name" />
<TableColumn fx:id="isDefaultCol" editable="false" resizable="false" styleClass="regimen-column" text="Is default template" />
<TableColumn fx:id="intervalCol" editable="false" resizable="false" styleClass="regimen-column" text="Time interval" />
<TableColumn fx:id="activeOnOffCol" editable="false" resizable="false" styleClass="regimen-column" text="On/Off active" />
<TableColumn fx:id="activeTWCol" editable="false" resizable="false" styleClass="regimen-column" text="Time window active" />
<TableColumn fx:id="activeTICol" editable="false" resizable="false" styleClass="regimen-column" text="Time interval active" />
<TableColumn fx:id="activeDoWCol" editable="false" resizable="false" styleClass="regimen-column" text="Days of week active" />
</columns>
<columnResizePolicy>
<TableView fx:constant="CONSTRAINED_RESIZE_POLICY" />
</columnResizePolicy>
</TableView>
</children>
</VBox>
更新:在我的項目,相關的控制器使用setCellFactory
和setCellValueFactory
,但即使沒有問題仍然存在任何邏輯。這個例子的控制器是空的。
但我希望每列具有相同的寬度,並且沒有空的空間。我錯過了什麼 ?
它*可能*不相關,但是表格單元格沒有正確實現。你的'updateItem(...)'方法*必須調用'super.updateItem(item,empty);'和* must *處理所有的可能性(也就是你需要調用setGraphic(null)'if item == null')。這可能是因爲未能調用超類方法意味着單元格尺寸不正確,導致列大小和佈局失敗。 –
(另外,如果使用lambda表達式,可以減少大量代碼的數量,但不會丟失可讀性。) –
感謝您指出@James_D,但不幸的是,它並未解決問題。無論如何,我會牢記這一點,在這些情況下,我總是「忘記」稱呼「超級」。 關於lambda表達式,我會喜歡使用它們,但由於項目限制(多平臺框架),我現在不能使用它們,因爲它們不受支持:( – Jacks