java - 如果在 TableView JavaFx 中选择了多行,则禁用某些上下文菜单项

标签 java binding javafx javafx-2

我是 JavaFx 的新手。有没有一种方法可以将菜单项的 disable 属性 绑定(bind)到 tableview 的选择属性。因此,如果选择了多行,菜单项将被禁用?

我试过了

mnuItem.disableProperty().bind(tblView.selectionModelProperty().isNull());

但是单选和多选都会被禁用。

如何禁用在 TableView 中选中多行的菜单项?

P.S. 我知道并尝试用如下的听众来做到这一点

 tblView.getSelectionModel().getSelectedIndices().addListener(new ListChangeListener<Integer>() {
       @Override
       public void onChanged(Change<? extends Integer> change) {
            if (change.getList().size() >= 2) {
                 mnuItem.setDisable(true);
            } else {
                 mnuItem.setDisable(false);
            }
       }
 });

但是,它抛出异常“java.lang.RuntimeException:无法设置绑定(bind)值”

Exception in thread "JavaFX Application Thread" java.lang.RuntimeException: A bound value cannot be set.
at javafx.beans.property.BooleanPropertyBase.set(BooleanPropertyBase.java:139)
at javafx.scene.control.MenuItem.setDisable(MenuItem.java:380)
at myPkg.MyController$14.onChanged(MyController.java:393)

最佳答案

此异常意味着您不能更改已绑定(bind)到另一个属性的属性的值。尝试移除 mnuItem

的绑定(bind)

关于java - 如果在 TableView JavaFx 中选择了多行,则禁用某些上下文菜单项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25800425/

相关文章:

java - 使用 jquery 在文本字段中显示 servlet 结果

java - 如何将 byteArray 转换为位图图像以在 Android 中的 imageview 中显示?

java - 同一插件的源目录之间的 Tycho/Maven 交叉引用

WPF 绑定(bind)到元素属性的 XPath 可访问值

css - JavaFX:使用 CSS 选择器的样式化应用程序

应用程序启动中的JavaFX简单按钮异常?

java - 使用返回值处理异常

python - 在 python 文件中导入带有 python 绑定(bind)的 C 文件

c# - 将 Combobox 控件绑定(bind)到 DataGrid 中的单独源

JavaFX-按钮高度不会变小?