我想做一件非常简单和常见的事情,但找不到使用 JavaFX 的方法。我有一个包含两列的 TableView,如果至少选择了一行,我想启用一个按钮。如果没有选择任何行,我想再次禁用该按钮。
为此,我需要获得一个选择更改事件或类似的东西。不应该有可能在动作上设置 tableView 的 selectionModel 或添加一个监听器吗?我需要做什么?
我想做一件非常简单和常见的事情,但找不到使用 JavaFX 的方法。我有一个包含两列的 TableView,如果至少选择了一行,我想启用一个按钮。如果没有选择任何行,我想再次禁用该按钮。
为此,我需要获得一个选择更改事件或类似的东西。不应该有可能在动作上设置 tableView 的 selectionModel 或添加一个监听器吗?我需要做什么?
我认为您要做的是将 ListChangeListener 添加到 TableView 的选择模型上的选定索引中。它应该是这样的......
tableView.getSelectionModel().setSelectionMode(SelectionMode.MULTIPLE); // just in case you didnt already set the selection model to multiple selection.
tableView.getSelectionModel().getSelectedIndices().addListener(new ListChangeListener<Integer>()
{
@Override
public void onChanged(Change<? extends Integer> change)
{
if (change.getList().size() >= 2)
{
button.setDisable(false);
}
else
{
button.setDisable(true);
}
}
});
我原本打算建议将按钮的禁用属性绑定到表视图上大于 2 的选定索引属性大小,但似乎没有提供。如果您愿意,您可以创建自己的 SimpleIntegerProperty 并在列表更改侦听器中更新它,将按钮的禁用属性绑定到您的 SimpleIntegerProperty 的值大于 2。我希望这个答案有帮助!
使用 Property 的另一种解决方案:
myButton.disableProperty().bind(myTable.getSelectionModel().selectedItemProperty().isNull());
这样,当至少选择了一行时,该按钮将启用