Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/321.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
如何更改被称为javafx的更改侦听器_Java_Javafx 2_Listener - Fatal编程技术网

如何更改被称为javafx的更改侦听器

如何更改被称为javafx的更改侦听器,java,javafx-2,listener,Java,Javafx 2,Listener,我是JavaFX新手,我的视图中有两个表,tableA和tableB。我为两个表都更改了侦听器。它们看起来如下所示: this.tableA.getSelectionModel().selectedItemProperty().addListener (New ChangeListener<Person> () { @Override public void changed( ObservableValue< ? extends Pe

我是JavaFX新手,我的视图中有两个表,
tableA
tableB
。我为两个表都更改了侦听器。它们看起来如下所示:

this.tableA.getSelectionModel().selectedItemProperty().addListener
    (New ChangeListener<Person> () {
         @Override
         public void changed( ObservableValue< ? extends Person> observable,Perosn oldValue, Person newValue ) {
             updateButtons("View-A");
         }
});

this.tableB.getSelectionModel().selectedItemProperty().addListener
    (New ChangeListener<Car> () {
         @Override
         public void changed( ObservableValue< ? extends Car> observable,Car oldValue, Car newValue ) {
             updateButtons("View-B");
         }
});
this.tableA.getSelectionModel().selectedItemProperty().addListener
(新的ChangeListener(){
@凌驾
公共无效已更改(可观察值<?扩展人员>可观察值、人员旧值、人员新值){
更新按钮(“视图A”);
}
});
此.tableB.getSelectionModel().SelectEditeProperty().addListener
(新的ChangeListener(){
@凌驾
公共无效已更改(可观察值<?扩展汽车>可观察、汽车旧值、汽车新值){
更新按钮(“视图B”);
}
});

因此,基本上,用户从
表a
中选择
,并在
表B
中显示所选人拥有的所有
汽车
对象。然后,他们可以选择每辆车,并通过不同的按钮更改某些属性但是在我选择了一辆车之后,如果我决定选择另一个人。当我从
表格a
中选择一个人时,程序仍然调用
表格B
更改侦听器?

我希望在您描述的场景中调用两个侦听器。当表A中的选择发生更改时,您将替换表B中显示的项目。如果以前在表B中选择了某个项目,则该表中选择的项目在发生此情况时必然会发生更改。(无论现在选择的是什么,它都不是以前选择的,因为该项不再在表中。)因此我认为这是您想要的行为,否则UI此时将处于不一致的状态

当您更改表B中所示的项目时,您可能也想清除所选内容:

this.tableA.getSelectionModel().selectedItemProperty().addListener
    (new ChangeListener<Person> () {
         @Override
         public void changed( ObservableValue< ? extends Person> observable,Person oldValue, Person newValue ) {
             // update items shown in table B
             tableB.getSelectionModel().clearSelection();
         }
});
this.tableA.getSelectionModel().selectedItemProperty().addListener
(新的ChangeListener(){
@凌驾
公共无效已更改(可观察值<?扩展人>可观察、人旧值、人新值){
//更新表B中所示的项目
tableB.getSelectionModel().clearSelection();
}
});
然后确保表B的选择模型的侦听器适当地处理newValue为null的情况