JavaFX的自定義組合框我有兩種類型的延伸級X與泛型類
public class A extends X
和
public class B extends X
在我的JavaFX應用程序類,需要有一個組合框。這個comboBox是通過使用類A或B構造的,並使用該類的各自的toString()方法來填充。減少代碼重複。
我想修改我當前的方法產生下拉框中,這樣,它將使A型的ObservableList或B.
protected ComboBox<? extends X> getComboBox(ObservableList<? extends X> list){
ComboBox<? extends X> comboBox = new ComboBox<>();
comboBox.setItems(list);
comboBox.setCellFactory(new Callback<ListView<? extends X>, ListCell<? extends X>>() {
@Override
public ListCell<Controller> call(ListView<Controller> param) {
return new ListCell<? extends X>(){
@Override
public void updateItem(Class<? extends X> content, boolean empty){
super.updateItem(content, empty);
if(!empty) {
setText(content.toString());
} else {
setText(null);
}
}
};
}
});
return comboBox;
}
由於兩個班有一個父類,是有可能實現這樣的事情(可能,但不是本質上,返回它的原始類類型)
@SillyFly - 我使用反射依賴關係檢索列表。它返回一個特定類型的所有類(即A)
public ObservableList<A> getAList() {
Reflections reflection = new Reflections("com.classes.aClasses");
ObservableList<A> classesList = FXCollections.observableArrayList();
for (Class<? extends A> thisClass : reflection.getSubTypesOf(A.class)) {
try {
classesList.add(thisClass.newInstance());
} catch (Exception e) {
e.printStackTrace();
}
}
return classesList;
}
什麼是「輸入」?這是基類(你以前稱爲'X')嗎? – Itai
更正了此@sillyfly – Eunanibus