에서 중첩 된 목록은 어떻게 자바 FX의 단일 콤보 상자에 중첩 된 직원과 감독자의 목록을 결합 할 8자바 FX - 콤보
나는 직원 및 감독자 다음과 같은 간단한 클래스 구조가 있습니다
public class Employee
{
private final StringProperty nameProperty = new SimpleStringProperty();
public Employee(String name)
{
this.nameProperty.set(name);
}
public StringProperty nameProperty()
{
return this.nameProperty;
}
}
public class Supervisor
{
private final StringProperty nameProperty = new SimpleStringProperty();
private final ListProperty<Employee> employeesProperty = new SimpleListProperty<Employee>();
public Supervisor(String name, List<Employee> employees)
{
this.nameProperty.set(name);
this.employeesProperty.addAll(employees);
}
public StringProperty nameProperty()
{
return this.nameProperty;
}
public ListProperty<Employee> employeesProperty()
{
return this.employeesProperty;
}
}
을
최종적 간단한 정적 감시 등급 :
public static class Supervisors
{
private static final ListProperty<Supervisor> supervisorsProperty = new SimpleListProperty<Supervisor>();
public static ListProperty<Supervisor> supervisorsProperty()
{
return supervisorsProperty;
}
}
(이 코드는 예를 들어 간소화 된) 0
이제 내 질문은 :
어떻게하면 수퍼바이저 목록을 JavaFX 콤보 박스 (또는 목록보기, 차이는 중요하지 않음)에 바인딩 할 수 있습니까? 난 그냥 나는 그냥 목록을 얻을 것이라고는 Supervisors.supervisorsProperty에 combobox.itemsProperty을 결합하면
Supervisor A
Employee A.1
Employee A.2
Supervisor B
Employee B.1
: 나는 콤보 상자 항목은 다음과 같이 할 수 있도록, 직원의 목록을 "전개"하고 싶은 관리자가 아닌 직원.
참고 : 추가 또는 제거 감독자 또는 직원이 콤보 상자에 직접 반영 될 수 있도록 바인딩을 사용하고 있습니다.
중첩 목록을 수퍼바이저 및 직원의 단일 목록으로 "펼치기"위해 특수 바인딩을 사용하거나 어댑터 클래스를 사용합니까? 후자의 경우 수퍼바이저 목록 (및 중첩 된 직원)의 변경 사항을 어떻게 추적합니까? 그리고 변경 기록원이 등록 및 등록 취소되는 복잡한 난제가되지 않도록하려면 어떻게해야합니까?
추 신 : 콤보 박스에 표시되는 감독자/직원의 정확한 이름을 항상 포함하는 방법이 포함 된 경우 마법 유니콘 보너스 포인트가 표시됩니다. 이름이 변경되면 이름도 변경됩니다. 콤보 박스.
같은 ComboBox에서 감독자와 직원을 찾고 있습니까? – ItachiUchiha
예. 아마 그것의 이름 속성을 가진 감독자와 직원 모두를위한 공유베이스 _Person_ 클래스가 필요할 것이므로 ComboBox이 될 것입니다. 그러나 제 두통은 실제로 어떻게 바인딩을 만드는 지요? (멋지고 깨끗한 방법으로 if 가능하면 콤보 박스와 수퍼바이저 및 중첩 된 직원 목록이 있습니까? 이 작업을 수행하는 간단한 방법이 있습니까? 아니면 해당 목록을 플랫 Person 목록에 "펼치고"바인딩해야합니까? (이것은 필요 이상으로 복잡해 보입니다. 그리고 평평한 목록을 최신으로 유지하는 것에 대해 생각해야합니다) –