使用以下代码总是以以下结尾:
Caused by: kotlin.UninitializedPropertyAccessException: lateinit property textArea has not been initialized
at kam.applogviewer.main.LogTab.setContent(LogTab.kt:20)
当我致电LogTab::setContent(lines)
时会发生这种情况。
也许这不是在tornadofx中的选项卡上使用FXML的正确方法?
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"/>
答案 0 :(得分:0)
使用$stmt = $mysqli->prepare("SELECT * FROM members WHERE phone = ?");
$stmt->bind_param("s", $providedphone);
$stmt->execute();
// bind returned columns to PHP variables
// as I dont know what your column names are this is just an example
$stmt->bind_result($name, $code);
// this will fetch the columns into the PHP varibles
$stmt->fetch();
委托为UI组件的根节点加载FXML,并使用by fxml()
委托访问从FXML生成的UI组件。您无需在TornadoFX中使用by fxid()
批注。您还必须永远不要手动实例化UIComponent实例,而使用@FXML
或find
。
请阅读https://github.com/edvin/tornadofx-guide/blob/master/part1/10.%20FXML.md以获得完整的说明,并考虑放弃FXML以使用更好的替代方法:键入安全生成器。