2016-06-29 1 views
1

나는 그런 내가 다른 클래스 구이기본 생성자가있는 다른 클래스에서 javafx 응용 프로그램을 시작하는 방법은 무엇입니까?

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(); 
    } 
} 

내가 구이 인스턴스를 생성하여 너무 기본 생성자와 기본 클래스에서 자바 FX 응용 프로그램을 실행하려면이 메인 클래스를

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

있습니다. 어떻게 할 수 있습니까?

+0

당신의 어플리케이션 클래스는 FX 메인 클래스입니다. 왜 다른 클래스에서 호출하려고하는지 모르겠습니다. 비 GUI 논리를 처리하고 그것을 분리하려고합니까? 그렇다면 FX Main Class에서 호출 할 것입니다. – XaolingBao

+0

그 호출을 생성자에 넣는 것은 매우 나쁜 생각입니다 : constructor call ->'launch()'call -> Application 클래스의 인스턴스 생성 (= 생성자 호출). 이 stackoverflow 함께 실패하거나 발사를 한 번 이상 호출에 대한 불평 여부를 모르겠지만 어쨌든 실패 할 것이다 ... – fabian

답변

3

launch 메서드 호출을 생성자에 넣지 마십시오. 이것은 차단 메서드 호출이며 응용 프로그램이 종료 될 때까지 반환되지 않습니다.

GUI 기본 생성자는 Application.launch 메서드에 의해 호출되며 인스턴스를 응용 프로그램 시작 프로그램에 전달할 필요가 없습니다. 다른 클래스의 main 메서드에서 실제로 전화하려면 Application.launch(Gui.class, args)을 직접 사용할 수 있습니다.

관련 문제