2015-02-08 2 views
0

Мне нужно проверить каждый элемент в моем CheckBoxTreeItem root.[JavaFX] Проверяйте каждый 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); 
    } 

} 

Я не могу найти что-либо в документе оракула. У меня есть красный перезвон и observableValue

ответ

0

Поскольку rootItem является родителем для заданного количества элементов, вам просто нужно пройти их, чтобы проверить их статус. Что-то вроде этого:

private boolean checkAllItemsSelected(){ 
    for(TreeItem item:rootItem.getChildren()){ 
     if(!((CheckBoxTreeItem)item).isSelected()){ 
      return false; 
     } 
    } 
    return true; 
} 

В случае многоуровневого дерева, вы можете создать рекурсивный метод.

EDIT

Если вам просто нужно знать, если любой из пунктов выбран этот будет возвращать их количество выбранного, печать на консоли свое имя:

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; 
} 
+0

Здравствуйте Переда, на первый ТНХ для вашего ответа. Но, похоже, мое объяснение было неточно. Мне нужно проверить, выбран ли какой-либо флажок. С вашим кодом это верно, только если выбраны все дочерние дочерние элементы или root (которые автоматически выбирают все). Но мне нужно выяснить, какие из этих флажков выбраны. – Hades85

+0

С «каждым пунктом» я думал, что вам нужно все. Если вам просто нужно найти, если какой-либо из них выбран, и какой из них просто изменить функцию ... Я отредактирую свой ответ –

+0

Позор мне! String сравнивая, я не получил эту идею. Большое спасибо за ваше время :-) – Hades85

0

сперва thx для вашего ответа. Но, похоже, мое объяснение было неточно. Мне нужно проверить, выбран ли какой-либо флажок. С вашим кодом это верно, только если выбраны все дочерние дочерние элементы или 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); 


} 

}

Смежные вопросы