我在每个单元格中都有一个自定义的cellFactory和一个按钮。单击任何其他节点时,将选择列表中的行,但是如果单击按钮,则不会选择该行。
我的cellFactory:
public class OrderListViewCell extends ListCell<Order> {
@FXML
private Pane container;
@FXML
private Button button;
private FXMLLoader mLLoader;
@Override
protected void updateItem(Order order, boolean empty) {
super.updateItem(order, empty);
if(empty || order == null) {
setText(null);
setGraphic(null);
} else {
if (mLLoader == null) {
mLLoader = new FXMLLoader(getClass().getResource("/FXML/order-cell.fxml"));
mLLoader.setController(this);
try {
mLLoader.load();
} catch (IOException e) {
e.printStackTrace();
}
}
setText(null);
setGraphic(container);
}
}
}
最佳答案
默认情况下,单击控件可能不允许选择列表单元格。在这种情况下,您必须手动处理选择。
包括一个单击的处理程序以按钮以选择基础列表单元。就像是 ...
try {
mLLoader.load();
button.setOnMouseClicked(e -> getListView().getSelectionModel().select(getItem()));
}catch (IOException e) {
e.printStackTrace();
}
请记住,您将不会获得listCell的:focused:selected选择样式,因为按钮将具有焦点。