Java [FX] CheckBoxTreeItem jedes EINZELNE item auf isSelected prüfen, wie?

DefconDev

Commander
Registriert
Jan. 2008
Beiträge
2.540
Hallo,

ich arbeite mich gerade in JavaFX ein, jetzt möchte ich für einen CheckBoxTreeView den Status "isSelected"(boolean) abrufen.

Zwar kann ich die Methode für checkBoxTreeItem aufrufen, die ist aber nur true wenn in meinem Code das RootItem Selected ist. Wenn es deselektiert ist aber seine Children teilweise selektiert dann gibt es ein false.

Code:
public class Controller{
	
	
	@FXML Button button;
	
	
	
	@FXML
	private void press(MouseEvent event){
		
			System.out.println("Hallo");
			//System.out.println(polo.isDisable());
			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("Test");
	 treeview.setCellFactory(CheckBoxTreeCell.forTreeView());
	 
	 checkBoxTreeItem = new CheckBoxTreeItem("Test1");
	 rootItem.getChildren().add(checkBoxTreeItem);
	 
	 System.out.println( rootItem.isIndependent());
	 
	 
	 checkBoxTreeItem = new CheckBoxTreeItem<>("Test2");
	 rootItem.getChildren().add(checkBoxTreeItem);
	 }
	  
	 
	 public void initialize() {
	 rootItem = new CheckBoxTreeItem<>("A");
	 treeview.setRoot(rootItem);
	 }
	
}


Jetzt habe ich natürlich google angeschmissen, in der Hoffnung ein simples Bsp. zu finden bei Oracle aber ich finde nichts dazu. Jetzt habe ich etwas von Callbacks und ObservableValue gelesen aber ich verstehe bisher nicht viel. Anscheinend ist es möglich den Status über ein Callback abzufragen aber wie.
 
Code:
private void checkItemIsSelected(String name){
	    for(TreeItem item:rootItem.getChildren()){
	        if(item.getValue().toString().equals(name)&&((CheckBoxTreeItem)item).isSelected()==true){
	        	chosen.add(name); //Chosen ist ein ArrayList
	        }
	    }
	}

das ist die Lösung, man kann durch die Items durchgehen und dann mit einem beliebigen Array(List) vergleichen.
 
Zurück
Oben