如何更改被称为javafx的更改侦听器
我是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
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的情况