Kotlin. Basic application JavaFX.
Essayer de Kotlin lang et j'ai eu l'impression qu'il est compatible avec Java et donc avec JavaFX et j'ai essayé de suivre:
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()
}
}
c'est fondamentalement la même que Java est
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();
}
}
mais Kotlin donne une erreur: Exception in thread "main" java.lang.RuntimeException: Impossible de construire instance d'Application: classe de Test
OriginalL'auteur Elavrius | 2016-01-16
Vous devez vous connecter pour publier un commentaire.
Les exemples de code que vous avez fournies ne sont pas équivalentes: un
de la déclaration de dans Kotlin est un singleton, elle n'a donc qu'une seule instance construit en appelant le constructeur privé lorsque la classe est initialisée. JavaFX est d'essayer d'appeler le constructeur de la classe reflectively mais échoue parce que le constructeur est privé comme il se doit.
Ce que vous cherchez peut-être plutôt une simple déclaration de classe, avec la
main
dans son compagnon de l'objet. Si aucune condition explicite de constructeurs sont déclarées, Kotlin, comme Java, va générer un par défaut, permettant de JavaFX pour instancier l'application:fun main()
bits directement dans le top-niveau de la portée, trop.Il a travaillé un peu mieux, mais encore: Exception in thread "main" java.lang.RuntimeException: Erreur: classe TestKt$Compagnon n'est pas une sous-classe de javafx.application.Application
Je pense que vous devriez utiliser cette méthode d'Application: docs.oracle.com/javafx/2/api/javafx/application/.... Dans Kotlin qui serait
launch(TestKt::class.java)
Maintenant, il a travaillé, merci à Vous) Pouvez-vous s'il Vous plaît mettre à jour Votre réponse initiale de sorte qu'il ne serait pas complète? Спасибо)
Cela fonctionne, mais il ne passe pas les arguments de programme à la Demande. Personnellement, j'utilise
@JvmStatic fun main(vararg args:String){launch(Main::class.java,*args);}
OriginalL'auteur Alexander Udalov
OriginalL'auteur jenglert