2015-03-18 2 views

ответ

0

Добавить слушателя в расширенное свойство дерева элементов, а если оно установлено в значение false, установите его значение true - таким образом элемент дерева всегда будет отображаться расширенным.

import javafx.application.Application; 
import javafx.scene.Scene; 
import javafx.scene.control.*; 
import javafx.scene.layout.StackPane; 
import javafx.stage.Stage; 

import java.util.stream.*; 

public class TreeViewSample extends Application { 
    @Override public void start(Stage stage) { 
     TreeItem<String> rootItem = new TreeItem<>("Inbox"); 
     rootItem.setExpanded(true); 
     IntStream.range(0, 6) 
       .mapToObj(i -> new TreeItem<>("Message" + i)) 
       .collect(Collectors.toCollection(rootItem::getChildren)); 

     rootItem.expandedProperty().addListener(observable -> { 
      if (!rootItem.isExpanded()) { 
       rootItem.setExpanded(true); 
      } 
     }); 

     TreeView<String> tree = new TreeView<>(rootItem); 
     stage.setScene(new Scene(new StackPane(tree), 300, 250)); 
     stage.show(); 
    } 

    public static void main(String[] args) { launch(args); } 
} 
0

Скрыть свой корень и установить его расширенным. Это может решить вашу проблему.

treeTable.setShowRoot(false); 
root.setExpanded(true); 
+1

Хотя это работает для дерева, оно терпит неудачу, если дерево имеет вложенные внутренние элементы. – ItachiUchiha

+0

Если нет значения, установленного для root, только дочерний элемент имеет некоторые значения, он может быть вложенным или нет, он будет работать –

+0

[Маленький пример, чтобы показать, что я имел в виду раньше] (https://gist.github.com/ TheItachiUchiha/44202825a7c4b2b1cfa0). В этом примере «Message 1» все еще уязвим для расширения, и пользователь может его развернуть. – ItachiUchiha

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