作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
对于 JFXTreeTableColumn,我编写了一个自定义 Cell Factory 作为回调。代码工作正常,但如果我想传递不同的泛型怎么办?
我已经尝试将泛型作为 ? or T, S 但我肯定做错了什么
public class CallbackImpl implements Callback<TreeTableColumn<Order, String>, TreeTableCell<Order, String>> {
private final ObservableList<String> paymentData;
public CallbackImpl(ObservableList<String> paymentData) {
this.paymentData = paymentData;
}
@Override
public TreeTableCell<Order, String> call(TreeTableColumn<Order, String> tc) {
ComboBox<String> combo = new ComboBox<>();
combo.getItems().addAll(paymentData);
JFXTreeTableCell<Order, String> cell = new JFXTreeTableCell<Order, String>() {
@Override
protected void updateItem(String payment, boolean empty) {
super.updateItem(payment, empty);
if (empty) {
setGraphic(null);
} else {
combo.setValue(payment);
setGraphic(combo);
}
}
};
return cell ;
}
}
我想用 <DifferentClass, String>
传递一个表甚至 <DifferentClass, Integer>
(我知道我必须更改 Integer 的代码才能工作)。
在 FXML Controller 中的用法: col.setCellFactory(new CallbackImpl(paymentData));
最佳答案
我只是对泛型进行了快速更改。由于我没有完整的代码,我不知道它是否能正常工作(或者我更改的所有内容是否应该更改),但它会让您大致了解如何尝试这样做:D
class CallbackImpl<V, U> implements Callback<TreeTableColumn<V, U>, TreeTableCell<V, U>>
{
private final ObservableList<U> paymentData;
public CallbackImpl(ObservableList<U> paymentData) {
this.paymentData = paymentData;
}
@Override
public TreeTableCell<V, U> call(TreeTableColumn<V, U> tc) {
ComboBox<U> combo = new ComboBox<>();
combo.getItems().addAll(paymentData);
JFXTreeTableCell<V, U> cell = new JFXTreeTableCell<V, U>() {
@Override
protected void updateItem(U payment, boolean empty) {
super.updateItem(payment, empty);
if (empty) {
setGraphic(null);
} else {
combo.setValue(payment);
setGraphic(combo);
}
}
};
return cell ;
}
}
只需将整个 CallbackImpl 通用化,然后您就可以在使用时指定您希望提供的内容。
关于java - 如何在回调类中传递不同的泛型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54571269/
我是一名优秀的程序员,十分优秀!