当 TableView selectedItem 不为空时启用按钮

Button enableWhen TableView selectedItem is not empty

TableView selectedItem 绑定到 ViewModel,我想在 selectedItem 为 null 时禁用按钮,否则启用。

class MainView: View("TheSubberKt") {
  override val root = Form()
  val model = MainViewModel()

  init {
    with(root) {
      fieldset {
        field("Media:") {
          textfield(model.mediaPath)
          button("...")
        }
      }
      tableview(subs) {
        // ...
        bindSelected(model.selectedSubtitle)
      }
      hbox {
        button("Hash Search")
        button("Download Selected") {
          // what to do here?
        }
      }
    }
  }
}

我想我必须创建一个 OvservableValue<Boolean> 然后传递给 enableWhen 但是,该怎么做?

是否可以将 属性 onChange 映射到自定义可观察对象? (只是另一个想法)

可观察值有一个函数,当它们不包含值时会 return 一个 BooleanBinding,并且由于您已经将所选项目绑定到 model.selectedSubtitle,您可以简单地在按钮构建器中添加以下表达式:

enableWhen(model.selectedSubtitle.isNotNull)

如果您没有将 TableView 的选定项绑定到视图中可访问的 属性,您可以直接存储对 table 的引用并绑定到 [= 中的状态29=]的选型模型:

enableWhen(table.selectionModel.selectedItemProperty().isNotNull)

另一方面,您可以通过删除 init 块并直接使用构建器声明根节点来清理语法:

override val root = tableview(subs) {
   ...
}

希望这对您有所帮助:)