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 № 1O 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:
- 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) - Seu arquivo FXML está no mesmo pacote que o seu
JavaApplication3
classe. Você precisará modificar o caminho passado paraFXMLLoader.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