带有复选框和单选按钮的JavaFXTreeView

带有复选框和单选按钮的JavaFXTreeView,javafx,checkbox,radio-button,treeview,Javafx,Checkbox,Radio Button,Treeview,我正在创建一个应用程序,它在TreeView中总是有3个级别(4个有根)的项,我需要它与复选框和单选按钮一起工作 public class TreeCellEmulated extends CheckBoxTreeCell<String> { private final RadioButton radio = new RadioButton(); @Override public void updateItem(String item, boolean empty)

我正在创建一个应用程序,它在TreeView中总是有3个级别(4个有根)的项,我需要它与复选框和单选按钮一起工作

public class TreeCellEmulated extends CheckBoxTreeCell<String> {

  private final RadioButton radio = new RadioButton();

  @Override
  public void updateItem(String item, boolean empty) {
    super.updateItem(item, empty);

    AbstractTreeItem item = (AbstractTreeItem) getTreeItem();

    if(item != null) {
      if(item.isLeaf()) {
        if(item.getGroup() == null) {   
          ToggleGroup group = ((AbstractTreeItem) item.getParent()).getGroup();
          item.setGroup(group);
          radio.setToggleGroup(group);
          radio.selectedProperty()...updateSelecte(newValue); //My attempt to change built-in checkboxes
        }
      setGraphic(radio);
      }
    }
  }     
}   
每个级别都有自己的TreeItem类,但它们都有共同的AbstractTreeItem

到目前为止,我一直在使用内置的CheckBoxTreeCell类

我试图在TreeCellFactory中添加这样的单选按钮,但我缺少复选框和单选按钮之间的链接

public class TreeCellEmulated extends CheckBoxTreeCell<String> {

  private final RadioButton radio = new RadioButton();

  @Override
  public void updateItem(String item, boolean empty) {
    super.updateItem(item, empty);

    AbstractTreeItem item = (AbstractTreeItem) getTreeItem();

    if(item != null) {
      if(item.isLeaf()) {
        if(item.getGroup() == null) {   
          ToggleGroup group = ((AbstractTreeItem) item.getParent()).getGroup();
          item.setGroup(group);
          radio.setToggleGroup(group);
          radio.selectedProperty()...updateSelecte(newValue); //My attempt to change built-in checkboxes
        }
      setGraphic(radio);
      }
    }
  }     
}   
公共类TreeCellulated扩展CheckBoxTreeCell{
专用最终单选按钮=新单选按钮();
@凌驾
public void updateItem(字符串项,布尔值为空){
super.updateItem(项,空);
AbstractTreeItem=(AbstractTreeItem)getTreeItem();
如果(项!=null){
if(item.isLeaf()){
如果(item.getGroup()==null){
ToggleGroup group=((AbstractTreeItem)item.getParent()).getGroup();
项目组(组);
radio.setToggleGroup(组);
radio.selectedProperty()…updateselect(newValue);//我试图更改内置复选框
}
设置图形(无线电);
}
}
}     
}   
我想保留“外部自动选择”功能(当您选择较高级别时,它会选择较低级别中的所有内容)。当在最低级别中没有选择单选按钮时,它应该选择第一个条目

最低级别的TreeItem包含具有布尔值的对象,我想在其中保存radioButton状态。(这可能可以通过radioButton上的selectedProprety和ChangeListener来完成)

有没有关于如何改进/返工的建议