我想从FXML设置TableView的SelectionModel,但我找不到如何做到这一点。我已经尝试了以下内容:
1.只需将其设置为TableView的属性:
<TableView selectionModel="MULTIPLE">
2.设置与ListView相同的属性(参见:https://community.oracle.com/thread/2315611?start=0&tstart=0):
<TableView multiSelect="true">
3.以不同的方式设置属性:
<TableView>
<selectionModel>
<TableView fx:constant="MULTIPLE" />
</selectionModel>
</TableView>
4.另一个版本:
<TableView>
<selectionModel>
<SelectionModel fx:constant="MULTIPLE" />
</selectionModel>
</TableView>
5.选择模型(不同):
<TableView>
<selectionModel>
<SelectionModel selectionModel="MULTIPLE" />
</selectionModel>
</TableView>
这些都不起作用。
非常感谢任何帮助!
答案 0 :(得分:6)
在FXML上应该可以这样:
<TableView fx:id="table" prefHeight="200.0" prefWidth="200.0" >
<columns>
<TableColumn prefWidth="75.0" text="C1" />
</columns>
<selectionModel>
<SelectionMode fx:constant="MULTIPLE"/>
</selectionModel>
</TableView>
不幸的是,当你运行它时会遇到异常:
java.lang.IllegalArgumentException: Unable to coerce SINGLE to class javafx.scene.control.TableView$TableViewSelectionModel.
at com.sun.javafx.fxml.BeanAdapter.coerce(BeanAdapter.java:495)
这种情况正在发生,因为bean适配器反复尝试在类javafx.scene.control.TableView$TableViewSelectionModel
中找到valueOf
的{{1}},但它找不到它。
此here有一张尚未解决的JIRA票证。
根据该报告,我发现的唯一可行解决方案是使用脚本功能:
javafx.scene.control.SelectionMode.MULTIPLE
与通过代码执行相同...