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

时间:2014-09-12 03:48:34

标签: java binding javafx javafx-2

我是JavaFx的新手。有没有办法可以将菜单项disable property绑定到tableview的选择属性。如果选择了多行,菜单项会被禁用吗?

我试过

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

但它会对单个和多个选择都禁用。

如何在表格视图中选择禁用多行菜单项?

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);
            }
       }
 });

但是,它会引发异常&#34; java.lang.RuntimeException:无法设置绑定值&#34;

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)

1 个答案:

答案 0 :(得分:0)

此异常表示您无法更改已绑定到其他属性的属性的值。尝试删除mnuItem

的绑定