/ / Como chamar uma classe JavaFX de outra classe? - javafx

Como chamar uma classe JavaFX de outra classe? - javafx

No meu projeto eu tenho 3 arquivos:

FXMLController.java este é um arquivo JavaFX

FXML.fxml este é outro arquivo JavaFX

JavaApplication3.java Este arquivo contém apenas o meu método principal:

public class JavaApplication3 {

/**
* @param args the command line arguments
*/
public static void main(String[] args) throws IOException {
// TODO code application logic here
//new NewJFrame().setVisible(true);
Application.launch(FXMLController.class);
}

}

Eu quero lançar minha classe FXMLController do meumétodo principal para executar o programa. Como fazer isso ? Meu código que eu escrevi não está funcionando, talvez porque eu tenho esse erro "nenhum método adequado encontrado para o lançamento".

Respostas:

0 para resposta № 1

O controlador é criado quando você carrega o arquivo FXML que especifica sua classe. Um aplicativo JavaFX deve ser iniciado usando uma subclasse de Application. Você deve realmente pensar no start() método em Application como sendo o equivalente de um método principal em um aplicativo Java regular:

import javafx.application.Application ;
import javafx.stage.Stage ;
import javafx.scene.Scene ;
import javafx.scene.Parent ;
import javafx.fxml.FXMLLoader ;

import java.io.IOException ;


public class JavaApplication3 extends Application {

@Override
public void start(Stage primaryStage) throws IOException {

Parent root = FXMLLoader.load(getClass().getResource("FXML.fxml"));
Scene scene = new Scene(root);
primaryStage.setScene(scene);
primaryStage.show();
}

// for the benefit of environments that don"t support direct launch
// of JavaFX Applications:

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

Isso pressupõe:

  1. A estrutura do seu arquivo FXML e o Controlador seguem os padrões padrão usuais (ou seja, você especifica a classe do controlador no fx:controller atributo)
  2. Seu arquivo FXML está no mesmo pacote que o seu JavaApplication3 classe. Você precisará modificar o caminho passado para FXMLLoader.load(...) se este não for o caso.

0 para resposta № 2

Parece que você não entendeu o fluxo do JavaFX.

Você só pode ter um aplicativo.

No seu caso, eu acho que o JavaApplication3.java.

Deixe esta classe estender o javafx.application.Application e chamar seu Application.launch principal (JavaApplication3.class);

No início do método em seu JavaApplication3 você precisa chamar o FXMLLoader para carregar seu FXML.fxml e crie seu FXMLController.java

Dê uma olhada aqui: https://docs.oracle.com/javafx/2/get_started/fxml_tutorial.htm