带有复选框和单选按钮的JavaFXTreeView
我正在创建一个应用程序,它在TreeView中总是有3个级别(4个有根)的项,我需要它与复选框和单选按钮一起工作带有复选框和单选按钮的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)
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来完成)
有没有关于如何改进/返工的建议