我需要检查CheckBoxTreeItem
根目录中的每一项。
目前我只能检查根项而不是他们的孩子。
public class Controller{
@FXML Button button;
@FXML
private void press(MouseEvent event){
System.out.println("Hello");
System.out.println(checkBoxTreeItem.isSelected());
}
@FXML
private TreeView<String> treeview;
private CheckBoxTreeItem<String> checkBoxTreeItem;
private CheckBoxTreeItem<String> rootItem;
public void viewListFill() {
rootItem.setExpanded(true);
System.out.print("hhhhhh");
treeview.setCellFactory(CheckBoxTreeCell.forTreeView());
checkBoxTreeItem = new CheckBoxTreeItem("Völkerwanderung");
rootItem.getChildren().add(checkBoxTreeItem);
System.out.println( rootItem.isIndependent());
checkBoxTreeItem = new CheckBoxTreeItem<>("b");
rootItem.getChildren().add(checkBoxTreeItem);
}
public void initialize() {
rootItem = new CheckBoxTreeItem<>("A");
treeview.setRoot(rootItem);
}
}
我无法在oracle doc中找到任何内容。
我有一个关于回电和observableValue
答案 0 :(得分:0)
由于rootItem
是给定数量项目的父项,因此您只需要检查它们的状态即可。像这样:
private boolean checkAllItemsSelected(){
for(TreeItem item:rootItem.getChildren()){
if(!((CheckBoxTreeItem)item).isSelected()){
return false;
}
}
return true;
}
如果是多级树,则可以创建递归方法。
修改强>
如果您只是需要知道是否选择了任何项目,这将返回所选项目的数量,在控制台上打印其名称:
private int checkItemsSelected(){
int count=0;
for(TreeItem item:rootItem.getChildren()){
if(((CheckBoxTreeItem)item).isSelected()){
count++;
System.out.println("item: "+item.getValue().toString());
}
}
return count;
}
如果您正在寻找一些具体项目:
private boolean checkItemIsSelected(String name){
for(TreeItem item:rootItem.getChildren()){
if(item.getValue().toString().equals(name)){
return ((CheckBoxTreeItem)item).isSelected();
}
}
return true;
}
答案 1 :(得分:0)
首先是你的回答。但似乎我的解释并不准确。我需要检查是否选中了任何复选框。使用您的代码,只有选中每个singel子项或root(自动选择全部)时才会出现这种情况。但我需要找出选中的复选框。
public class Controller{
@FXML Button button;
@FXML
private void press(MouseEvent event){
System.out.println("Hallo");
System.out.println("Es ist selektiert: " +checkAllItemsSelected());
}
private boolean checkAllItemsSelected(){
for(TreeItem item:rootItem.getChildren()){
if(!((CheckBoxTreeItem)item).isSelected()){
return false;
}
}
return true;
}
@FXML
private TreeView<String> treeview;
private CheckBoxTreeItem<String> checkBoxTreeItem;
private CheckBoxTreeItem<String> rootItem;
public void initialize() {
rootItem = new CheckBoxTreeItem<>("Root Check");
treeview.setRoot(rootItem);
viewListFill();
}
public void viewListFill() {
rootItem.setExpanded(true);
treeview.setCellFactory(CheckBoxTreeCell.forTreeView());
checkBoxTreeItem = new CheckBoxTreeItem("Check 1");
rootItem.getChildren().add(checkBoxTreeItem);
checkBoxTreeItem = new CheckBoxTreeItem<>("Check 2");
rootItem.getChildren().add(checkBoxTreeItem);
}
}