单击按钮时未选择Javafx单元格

单击按钮时未选择Javafx单元格,java,javafx,Java,Javafx,我有一个定制的手机工厂,每个手机都有一个按钮。单击任何其他节点时,将选中列表中的行,但如果单击按钮,则不会选择该行 我的手机工厂: public class OrderListViewCell extends ListCell<Order> { @FXML private Pane container; @FXML private Button button; private FXMLLoader mLLoader; @Overr

我有一个定制的手机工厂,每个手机都有一个按钮。单击任何其他节点时,将选中列表中的行,但如果单击按钮,则不会选择该行

我的手机工厂:

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);
        }

    }
}
公共类OrderListViewCell扩展了ListCell{ @FXML 专用窗格玻璃容器; @FXML 私人按钮; 私人FXMLLoader; @凌驾 受保护的void updateItem(顺序,布尔空){ super.updateItem(订单,空); if(空| |顺序==null){ setText(空); 设置图形(空); }否则{ if(mLLoader==null){ mLLoader=newFXMLloader(getClass().getResource(“/FXML/order cell.FXML”); mLLoader.setController(此); 试一试{ mLLoader.load(); }捕获(IOE异常){ e、 printStackTrace(); } } setText(空); 设置图形(容器); } } }
默认情况下,单击控件可能不允许选择列表单元格。在这种情况下,您必须手动处理选择。 包括单击的处理程序到按钮以选择基础listcell。类似于

    try {
          mLLoader.load();
          button.setOnMouseClicked(e -> getListView().getSelectionModel().select(getItem()));
    }catch (IOException e) {
        e.printStackTrace();
   }
请记住,您将不会获得listCell的:聚焦:选定选择样式,因为按钮将具有焦点。

Post a。。