2017-12-11 9 views
0

현재 여러 사건에 대한 보고서를 작성하는 도구를 만들고 있습니다.JavaFX - 다른 콤보 상자에서 선택된 항목 제거

첫 번째 단계에서는 사용자가 통화에 참여한 모든 사람을 선택합니다 (우리에게는 26 명의 승무원이 있습니다). 다음 단계에서는 모든 선택된 사람이 6 개의 콤보 박스에 기록되므로 사용자는 각 차량의 운전자와 지휘관 (각 차량의 3 명의 지휘관과 운전자, 따라서 6 개의 콤보)을 선택할 수 있습니다.

내 문제는 : 나는 같은 사람이 모든 차량이나 드라이버 동시에 사령관 드라이버로 선택되어 있는지 방지 할 필요가있다. 그래서 난에 ChangeListener를 통해 다른 모든 콤보 상자에서 선택한 사람을 제거하려고 :

(모든 콤보 하나 개의 ChangeListener, 여기에 예) 미세 지금까지하지만, 사용자가 자신의 선택을 변경하면 작동

inputDriverTruck42.getSelectionModel().selectedItemProperty().addListener(new ChangeListener() { 
     @Override 
     public void changed(ObservableValue ov, Object t, Object t1) { 
      String toRemove = inputDriverTruck42.getSelectionModel().getSelectedItem(); 
      inputDriverCar19.getItems().remove(toRemove); 
      inputDriverTruck33.getItems().remove(toRemove); 
      inputCommanderCar19.getItems().remove(toRemove); 
      inputCommanderTruck42.getItems().remove(toRemove); 
      inputCommanderTruck33.getItems().remove(toRemove); 
     } 

}); 

첫 번째 콤보 박스의 경우 이전에 제거 된 항목은 분명히 다른 모든 콤보 박스에서 사라집니다. 또한 사용자가 첫 번째 콤보 상자의 모든 사람을 차례로 선택하면 다른 콤보 상자가 잠시 후에 비어있게됩니다.

그래서 어떻게 든 현재 선택된 항목을 잃지 않거나 목록에 다시 선택한 항목을 다시 추가하지 않고 모든 콤보 상자의 선택한 항목을 기반으로 상자를 다시 채워야합니다.

도움을 주시면 감사하겠습니다. 미리 감사드립니다.

답변

-1

어떤 JDK 버전을 사용하고 있습니까? 최신 JDK를 체크인 했습니까? JDK 8u151, JDK 9에서 문제를 확인하시기 바랍니다.