Здесь, как я вижу, вы используете функцию lambda
внутри метода initialize, как показано ниже.
listViewArtigosMercado.setCellFactory((ListView<String> param) -> new ListCell<String>(){
@Override
public void updateItem(String name, boolean empty){
super.updateItem(name,empty);
if (name.equals("Vender")){
setText(name);
((Node)this).setId("id");
}
}
});
Lambda не рассматривается как анонимный класс.Таким образом, область действия лямбда-функции ограничена этим конкретным закрывающим закрытием.this
- ссылка только для этой конкретной области.поэтому вы не можете писать this.setId('Id');
внутри лямбды setCelFactor, потому что она не содержит setId
метода.
Здесь лямбда рассматривается как дочерний класс родительского класса.В вашем случае это дочерний класс FXMLDocumentController
, поэтому он имеет доступ ко всем открытым методам родительского класса, так что вы можете использовать setID
или другие методы напрямую без каких-либо ссылок.