Когда вы говорите lazy val ui = new BoxPanel(Orientation.Vertical) { ... }
, вы создаете новое анонимное расширение для класса BoxPanel. ui
- это BoxPanel, поэтому только открытые члены BoxPanel видны во внешней области.
Один из способов обойти это - переместить объявление table
за пределы BoxPanel, чтобы оно было полем SunsetTable. Тогда вы можете сказать
SunsetTable.table.update(0,0,"ABC")
Вы также можете оставить свой код как есть и сказать
SunsetTable.ui.contents(0).asInstanceOf[ScrollPane].contents(0)
.asInstanceOf[Table].update(0,0,"ABC")
Наконец, вы можете либо объявить новый класс, который расширяет BoxPanel и включает в себя метод updateTable
, и сделать ui
и его экземпляр, либо создать черту Updatable
, которую вы можете использовать в описании пользовательского интерфейса, делая ваш ui
тип BoxPanel with Updatable
, так что вы можете получить доступ к методу updateTable.