2016-06-29 7 views
1

У меня есть основной классКак запустить приложение javafx из другого класса с конструктором по умолчанию?

public class Main{ 
    public static void main(String[] args) { 
     Gui gui = new Gui(); 
    } 
} 

Тогда у меня есть еще один класс Gui

import javafx.application.Application; 
import javafx.scene.Scene; 
import javafx.scene.layout.FlowPane; 
import javafx.stage.Stage; 

public class Gui extends Application{ 
    public Gui() { 
     Application.launch(); 
    } 
    @Override 
    public void start(Stage primaryStage) throws Exception { 
     primaryStage.setTitle(""); 
     FlowPane flowLayout= new FlowPane(); 
     Scene scene = new Scene(flowLayout,200,200); 
     primaryStage.setScene(scene); 
     primaryStage.show(); 
    } 
} 

Я хочу, чтобы запустить приложение JavaFX от главного класса путем создания Gui экземпляра и конструктор по умолчанию тоже. Как я могу это сделать?

+0

Ваш класс приложений - ваш основной класс FX, я не уверен, почему вы пытаетесь назвать его из другого класса? Вы пытаетесь справиться с логикой не-gui и пытаетесь ее отделить? ЕСЛИ так вы назовете это из основного класса FX. – XaolingBao

+0

Включение этого вызова в конструктор - очень плохая идея: конструктор call -> 'launch()' call -> создание экземпляра класса Application (= вызов конструктора). Я не уверен, что это не удается с помощью stackoverflow или жалуется на запуск запуска более одного раза, но это все равно не срабатывает ... – fabian

ответ

3

Не ставьте вызов метода launch в конструктор; Это вызов метода блокировки и не будет возвращаться до выхода приложения.

Конструктор по умолчанию GUI будет вызываться методом Application.launch, и вам не нужно (и не может) передать ваш экземпляр в программу запуска приложений. Если вы действительно хотите позвонить из метода main в другом классе, вы можете напрямую использовать Application.launch(Gui.class, args).

 Смежные вопросы

  • Нет связанных вопросов^_^