2016-08-27 3 views
-2

я получаю сообщение об ошибке: «локальные переменные ссылочные из внутреннего класса должно быть окончательным или эффективно окончательным»локальные переменные ссылочные из внутреннего класса должно быть окончательным или эффективно окончательным 3

Эта ошибка относится к:

MyTreeItem LeftRootItem = (MyTreeItem) treeViewLeft.getRoot(); 

Какая у меня ошибка. И почему эта ошибка не похожа на «treeViewRight»?

addAttribute.setOnAction(new EventHandler<ActionEvent>(){ 
    @Override 
    public void handle(ActionEvent event) { 
     TreeView treeViewLeft = new TreeView(); 
     treeViewLeft.setShowRoot(false); 
     treeViewLeft.setRoot(new MyTreeItem ("root")); 
     treeViewLeft.getRoot().setExpanded(true); 
     TreeView treeViewRight; 
     Button button = new Button ("<<"); 
     HBox hBox = new HBox(); 
     DBConnect.dbconnect(); 
     treeViewRight = DB.loadAttributeClasses(); 
     treeViewLeft = DB.getAttributesfromClassorProduct(selectedItem.getClassID()); 
     treeViewRight.setShowRoot(false); 
     treeViewRight.getRoot().setExpanded(true); 
     hBox.getChildren().addAll(treeViewLeft, button, treeViewRight); 
     Scene scene = new Scene(hBox); 

     Stage attributeSelect = new Stage(); 
     attributeSelect.setTitle("Hello World!"); 
     attributeSelect.setScene(scene); 
     attributeSelect.show();  

     button.setOnAction(new EventHandler<ActionEvent>(){ 

      @Override 
      public void handle(ActionEvent event) { 
       MyTreeItem rightItem = (MyTreeItem) treeViewRight.getSelectionModel().getSelectedItem(); 
       DB.setProdClassAttr(selectedItem.getClassID(), rightItem.getClassID(), selectedItem.getType()); 

       rightItem.getParent().getChildren().remove(rightItem); 
       MyTreeItem LeftRootItem = (MyTreeItem) treeViewLeft.getRoot(); 
      } 
     }); 
    } 
}); 

ответ

1

Проблема заключается в том, что вы назначаете два различных TreeView с до treeViewLeft.

Ваш четвёртая линия

TreeView treeViewLeft = new TreeView(); 

и через несколько строк вниз присвоить новое значение treeViewLeft:

treeViewLeft = DB.getAttributesfromClassorProduct(selectedItem.getClassID()); 

Это не допускается, если вы хотите сослаться на treeViewLeft из кнопок onAction обработчик.

Вы назначаете только значение treeViewRight, и это разрешено.

+0

спасибо. Это было очень полезно –

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

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