Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/apache-flex/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
尝试在scalafx中获取用户的最新鼠标单击_Scala_Mouseevent_Scalafx - Fatal编程技术网

尝试在scalafx中获取用户的最新鼠标单击

尝试在scalafx中获取用户的最新鼠标单击,scala,mouseevent,scalafx,Scala,Mouseevent,Scalafx,我正在尝试获取用户最新的鼠标点击,以便显示正确的表格。然而,我找不到任何方法来实现这个想法。如何使用mouseEvent函数获取用户的最新鼠标点击 我尝试使用if-else语句,但当monstersTable1中仍然有值时,它就不起作用了 def handleEditMonster(action : ActionEvent) = { val selectedMonster1 = monstersTable1.selectionModel().selectedItem.value

我正在尝试获取用户最新的鼠标点击,以便显示正确的表格。然而,我找不到任何方法来实现这个想法。如何使用mouseEvent函数获取用户的最新鼠标点击

我尝试使用if-else语句,但当monstersTable1中仍然有值时,它就不起作用了

def handleEditMonster(action : ActionEvent) = {
    val selectedMonster1 = monstersTable1.selectionModel().selectedItem.value
    val selectedMonster2 = monstersTable2.selectionModel().selectedItem.value

    if (selectedMonster1 != null){
        val okClicked = MainApp.showMonsterEditDialog(selectedMonster1)
        if (okClicked) showMonstersDetails(Some(selectedMonster1))

    } else if (selectedMonster2 != null) {
        val okClicked = MainApp.showMonsterEditDialog(selectedMonster2)
        if (okClicked) showMonstersDetails(Some(selectedMonster2))

    } else {
        // Nothing selected.
        val alert = new Alert(Alert.AlertType.Warning){
          initOwner(MainApp.stage)
          title       = "No Selection"
          headerText  = "No monsters Selected"
          contentText = "Please select a monsters in the table."
        }.showAndWait()
      }
    }

我希望它能够访问第二个表,即使selectedMonster1仍然是!=空

从你的问题来看,你不完全清楚你想做什么,所以请容忍我。。。作为将来的参考,最好能创建一个能说明您的问题的示例

我假设您有两个scalafx.scene.control.TableView实例,通过monstersTable1和monstersTable2引用。您希望允许用户选择第一个表中的一个怪物或第二个表中的一个怪物,但不能同时从每个表中选择一个怪物

我不清楚何时调用handleEditMonster函数,所以我猜它是在用户单击(比如)编辑Monster按钮时调用的,就像该按钮的单击事件处理程序一样

我有这个权利吗

假设上述内容准确无误,则应侦听表选择中的更改,并在进行新选择时清除另一个表中的选择。每个表中当前选定的项都是一个属性,我们可以将侦听器添加到该属性中,因此我们可以在场景的初始化中使用以下代码来实现这一点:

//在onChange处理程序中,第一个参数引用observable属性 //在本例中已更改的,标识当前 //表中的选定项,第二个是属性的新值,第三个是属性的新值 //是它以前的值。我们可以忽略本文中的第一个和第三个参数 //案例。如果newValue为非null,即如果用户已 //从该表中选择,然后清除另一个表中的当前选择 //桌子。 monstersTable1.selectionModel.selectedItem.onChange{{u0,newValue,{u0=> ifnewValue ne null monstersTable2.selectionModel.clearSelection } monstersTable2.selectionModel.selectedItem.onChange{{u0,newValue,{u0=> ifnewValue ne null monstersTable1.selectionModel.clearSelection } 这应该可以为您实现,您的handleEditMonster函数现在应该可以工作了。您可能希望添加一个断言,以防止两个表都有当前选择,这表明选择处理程序逻辑中存在错误