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