我想从 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>
这些都不行。
非常感谢任何帮助!
最佳答案
如果在 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
中找到 javafx.scene 的
,但没有找到。valueOf
。 control.SelectionMode.MULTIPLE
此 here 的 JIRA 票证尚未解决.
根据该报告,我发现的唯一可行的解决方案是使用脚本功能:
...
<?language javascript?>
<TableView fx:id="table" prefHeight="200.0" prefWidth="200.0" >
<columns >
<TableColumn fx:id="col" prefWidth="75.0" text="C1" />
</columns>
</TableView>
<fx:script>
table.getSelectionModel().setSelectionMode(javafx.scene.control.SelectionMode.MULTIPLE);
</fx:script>
这和用代码做是一样的……
关于javafx - 在 FXML 中为 TableView 设置 SelectionModel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27667965/