JavaFX в Scala не может найти метод запуска

1

Пытаясь увидеть, могу ли я сделать и запустить программу JavaFX в Scala, я столкнулся с любопытной проблемой, метод запуска не найден...

Здесь код Java:

package example;

import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.*;
import javafx.stage.*;

public class Program extends Application {

    @Override
    public void start(Stage stage) throws Exception {
        Parent root = FXMLLoader.load(getClass().getResource("Test.fxml"));

        Scene scene = new Scene(root, 300, 275);

        stage.setTitle("FXML Test");
        stage.setScene(scene);
        stage.show();
    }

    public static void main(String[] args) {
        launch(args);
    }
}

И прямой перевод:

package example

import javafx.application.Application
import javafx.fxml.FXMLLoader
import javafx.scene._
import javafx.stage._

object Program extends Application {
  override def start(stage: Stage): Unit = {
    val root = FXMLLoader.load(getClass getResource "Test.fxml")

    val scene = new Scene(root, 300, 275)

    stage setTitle "FXML Test Scala"
    stage setScene scene
    stage.show
  }

  def main(args: Array[String]): Unit = launch(args) // this bit fails
}

Я решил сделать перевод 1:1, чтобы убедиться, что он даже начнет работать, но, как я уже говорил, компилятор не знает, какой launch находится в Scala...

Так что я делаю неправильно здесь? И что еще более важно, как я могу это решить?

Теги:
javafx

1 ответ

2

На вопрос Google+ Scala группа получила следующее рабочее решение благодаря Витольду Чаплевски:

package example

import javafx.application.Application
import javafx.fxml.FXMLLoader
import javafx.scene._
import javafx.stage._

object Program {
  def main(args: Array[String]): Unit = 
    Application.launch(classOf[Program], args: _*)
}

class Program extends Application {
    override def start(stage: Stage): Unit = {
    val root = FXMLLoader.load(getClass() getResource "Test.fxml")
    val scene = new Scene(root, 300, 275)
    stage setTitle "FXML Test Scala"
    stage setScene scene
    stage.show
  }
}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню