2013-12-14 5 views
0

Я создаю TreeView в файле .fxml, а затем я пытаюсь показать корневой узел. но это не показано.Корневой узел (TreeItem) не отображается в TreeView

Вот мой код.

<TabPane prefHeight="289.0" prefWidth="246.0" styleClass="tab-pane" tabClosingPolicy="UNAVAILABLE" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0"> 
        <stylesheets> 
        <URL value="@main.css" /> 
        </stylesheets> 
        <tabs> 
        <Tab text="TestBed Explorer"> 
         <content> 
         <AnchorPane id="Content" fx:id="soariteAnchorScollparent" minHeight="0.0" minWidth="0.0" prefHeight="180.0" prefWidth="200.0"> 
          <children> 
          <ScrollPane fx:id="soariteTreeScrollPane" prefHeight="259.0" prefWidth="246.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0"> 
           <content> 
           <AnchorPane id="Content" fx:id="soariteTreeAnchorPane" minHeight="0.0" minWidth="0.0" prefHeight="249.0" prefWidth="73.0"> 
            <children> 
            <TreeView fx:id="soariteTree" prefHeight="245.0" prefWidth="79.0" showRoot="true" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="167.0" AnchorPane.topAnchor="0.0"> 
             <TreeItem expanded="true" value="categories" fx:id="rootTreeItem" /> 
            </TreeView> 
            </children> 
           </AnchorPane> 
           </content> 
          </ScrollPane> 
          </children> 
         </AnchorPane> 
         </content> 
        </Tab> 
        </tabs> 
       </TabPane>  

Я также даю ссылку на это в основном классе.

public class Mainextends Application { 
@FXML 
public TreeView<String> soariteTree; 
@FXML 
public TreeItem<String> rootTreeItem; 

Пожалуйста, дайте мне любую ссылку или подсказку.

ответ

5

Вы сделали небольшую ошибку с FXML,

вы можете увидеть, как вы написали AnchorPane.rightAnchor="167.0", который делает ваш вид дерев исчезает (и то же небольшие ошибки с шириной панели якорной и вида дерева).

заменить вашу на панели прокрутки с,

<ScrollPane fx:id="soariteTreeScrollPane" prefHeight="259.0" prefWidth="246.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0"> 
           <content> 
           <AnchorPane id="Content" fx:id="soariteTreeAnchorPane" minHeight="0.0" minWidth="0.0" prefHeight="-1.0" prefWidth="-1.0"> 
            <children> 
            <TreeView fx:id="soariteTree" prefHeight="-1.0" prefWidth="-1.0" showRoot="true" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0"> 
             <TreeItem expanded="true" value="categories" fx:id="rootTreeItem" /> 
            </TreeView> 
            </children> 
           </AnchorPane> 
           </content> 
          </ScrollPane> 

UPDATE: - Обработка мышиного Event

soariteTree.addEventHandler(MouseEvent.MOUSE_PRESSED, new EventHandler<MouseEvent>() { 
     @Override 
     public void handle(MouseEvent event) { 
      if (event.getButton().equals(MouseButton.SECONDARY)) { 
       System.out.println(">> " + event.getEventType()); 
      } 
     } 
    }); 
+0

Можете ли вы сделать еще одну помощь .... Как добавить прослушивателя мыши правой кнопкой мыши на этом Дерево? –

+0

Решена ли ваша проблема, тогда сделайте это правильно, и обязательно попробуйте щелкнуть правой кнопкой мыши и отправить ее позже. –

+0

да .. вы решаете мою проблему .. не менее 20 часов нужно присуждать награду ... –

2

ваш FXML будет,

<TreeView fx:id="categoryTreeView" maxHeight="1.7976931348623157E308" maxWidth="1.7976931348623157E308" minWidth="200.0" prefHeight="-1.0" prefWidth="200.0" showRoot="true" styleClass="master-tree" VBox.vgrow="ALWAYS"> 
      <TreeItem expanded="true" value="categories" fx:id="categoryTreeItem" /> 
</TreeView> 

И Ваш контроллер будет,

public class MyClass extends Application { 
@FXML private TreeItem<ItemMaster> categoryTreeItem; 
@FXML private TreeView<ItemMaster> categoryTreeView; 

Так что вам не нужно, чтобы создать корень для дерева. И все готово.

+0

обновление мой вопрос .... см –

+0

удалить строку, myTree.setRoot (royalRoot); вам не нужно снова устанавливать root. и напишите showRoot = "true" в вашем fxml –

+0

i уже удаляю этот код строки –

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