Использование следующего кода всегда заканчивается на:
Caused by: kotlin.UninitializedPropertyAccessException: lateinit property textArea has not been initialized
at kam.applogviewer.main.LogTab.setContent(LogTab.kt:20)
Это происходит, когда я звоню LogTab::setContent(lines)
.Может быть, это неправильный способ использовать FXML с вкладкой в Tornadofx?
MainView.kt (фрагмент):
class MainView : View("Example")
{
...
fun showFileContent(fileName: String, lines: List<String>)
{
val logTab = LogTab(fileName, lines)
tabPane.tabs.add(logTab)
tabPane.selectionModel.select(logTab)
// this call raises the exception
logTab.setContent(lines)
}
}
LogTab.kt:
package example.applogviewer.main
import javafx.fxml.FXML
import javafx.fxml.FXMLLoader
import javafx.scene.control.Tab
import javafx.scene.control.TextArea
class LogTab(fileName: String, lines: List<String>) : Tab(fileName)
{
@FXML
lateinit var textArea: TextArea
init
{
content = FXMLLoader.load(this.javaClass.getResource("LogTab.fxml"))
}
fun setContent(lines: List<String>)
{
textArea.text = "I like to see this text."
}
}
LogTab.fxml:
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.control.TextArea?>
<TextArea xmlns="http://javafx.com/javafx" xmlns:fx="http://javafx.com/fxml" fx:id="textArea"/>