科特林。基本的 JavaFX 应用程序
Kotlin. Basic JavaFX application
试用 Kotlin lang,我的印象是它与 Java 兼容,因此与 JavaFX 兼容,我尝试了以下操作:
public object TestKt: Application() {
public override fun start(stage: Stage){
val pane= Pane()
val scene=Scene(pane,200.0,200.0)
stage.scene = scene
stage.show()
}
@JvmStatic public fun main(args: Array<String>){
launch()
}
}
这与Java的
基本相同
public class Test extends Application {
@Override
public void start(Stage stage) {
Pane pane=new Pane();
Scene scene=new Scene(pane, 200,200);
stage.setScene(scene);
stage.show();
}
public static void main(String[] args){
launch();
}
}
但是 Kotlin 报错:Exception in thread "main" java.lang.RuntimeException: Unable to construct Application instance: class Test
您提供的代码示例不等价:Kotlin中的object
declaration是一个单例,因此它只有一个在class初始化时调用私有构造函数构造的实例。 JavaFX 试图以反射方式调用 class 的构造函数但失败了,因为该构造函数应该是私有的。
您可能正在寻找的是一个简单的 class 声明,其 companion object 中包含 main
。如果没有显式声明构造函数,Kotlin 将像 Java 一样生成一个默认构造函数,允许 JavaFX 实例化应用程序:
class Test : Application() {
override fun start(stage: Stage) {
...
}
companion object {
@JvmStatic
fun main(args: Array<String>) {
launch(Test::class.java)
}
}
}
class MyApplication : Application() {
override fun start(primaryStage: Stage) {
}
}
fun main(args: Array<String>) {
Application.launch(MyApplication::class.java, *args)
}
这是启动 Java FX 应用程序的简单方法
class MyApplication: Application(){
override fun start(primaryStage: Stage?){
//You code here
}
companion object{
@JvmStatic
fun main(args: Array<String>){
launch(MyApplication::class.java, *args)
}
}
}
试用 Kotlin lang,我的印象是它与 Java 兼容,因此与 JavaFX 兼容,我尝试了以下操作:
public object TestKt: Application() {
public override fun start(stage: Stage){
val pane= Pane()
val scene=Scene(pane,200.0,200.0)
stage.scene = scene
stage.show()
}
@JvmStatic public fun main(args: Array<String>){
launch()
}
}
这与Java的
基本相同public class Test extends Application {
@Override
public void start(Stage stage) {
Pane pane=new Pane();
Scene scene=new Scene(pane, 200,200);
stage.setScene(scene);
stage.show();
}
public static void main(String[] args){
launch();
}
}
但是 Kotlin 报错:Exception in thread "main" java.lang.RuntimeException: Unable to construct Application instance: class Test
您提供的代码示例不等价:Kotlin中的object
declaration是一个单例,因此它只有一个在class初始化时调用私有构造函数构造的实例。 JavaFX 试图以反射方式调用 class 的构造函数但失败了,因为该构造函数应该是私有的。
您可能正在寻找的是一个简单的 class 声明,其 companion object 中包含 main
。如果没有显式声明构造函数,Kotlin 将像 Java 一样生成一个默认构造函数,允许 JavaFX 实例化应用程序:
class Test : Application() {
override fun start(stage: Stage) {
...
}
companion object {
@JvmStatic
fun main(args: Array<String>) {
launch(Test::class.java)
}
}
}
class MyApplication : Application() {
override fun start(primaryStage: Stage) {
}
}
fun main(args: Array<String>) {
Application.launch(MyApplication::class.java, *args)
}
这是启动 Java FX 应用程序的简单方法
class MyApplication: Application(){
override fun start(primaryStage: Stage?){
//You code here
}
companion object{
@JvmStatic
fun main(args: Array<String>){
launch(MyApplication::class.java, *args)
}
}
}