单击按钮时未选择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。。