2013-12-11 4 views
0

필자는 JavaFX를 처음 사용하며, 내보기에 두 개의 테이블, tableAtableB이 있습니다. 두 테이블 모두에 대해 Change Listener를 만들었습니다. 그들은 다음과 같이 : 변경 청취자를 변경하는 방법 javafx

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

그래서 기본적으로 무슨 일이 일어나고 있는지 사용자가 TableA에서 Person을 선택하고 그 사람이 TableB에서이 선택한 모든 Car 객체를 표시한다는 것입니다. 그런 다음 각 자동차를 선택하고 다른 버튼으로 특정 속성을 변경할 수 있습니다. BUT 차를 선택한 후 다른 사람을 선택하기로 결정한 경우. TableA에서 사람을 선택하면 프로그램에서 여전히 변경 수신자 TableB을 호출합니까?

답변

1

설명하는 시나리오에서 두 수신기가 모두 호출되기를 기대합니다. 표 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(); 
     } 
}); 

와 테이블 B의 선택 모델에 대한 리스너가 NEWVALUE가 null 적절 인 경우를 처리하는지 확인 .

관련 문제