# JavaFX aus Java-Application heraus starten



## JavaFXer (8. Okt 2012)

Hallo zusammen,

ich beginne gerade damit mich in JavaFX einzuarbeiten, was soweit auch gut funktioniert. Vor einem (wahrscheinlich dämlichen) Problem stehe ich aber gerade:

Ich würde gerne die JavaFX Klasse mit der Gui aus einer "normalen" Javaklasse aus der Main-Methode heraus aufrufen. Hintergrund ist der, dass ich zunächst aus der Main-Methode heraus einige Objekte instanzieren möchte und dann erst die Gui aufrufe.  (Also ähnlich einer Swinganwendung)

Oder übernimmt diesen Part die Main Methode der JavaFX Klasse? Diese wird nur leider beim Aufruf via Netbeans nicht ausgewertet... Irgendwie stehe ich hier auf dem Schlauch?!

Viele Grüße

Markus


----------



## jgh (8. Okt 2012)

geht sowas in der Art nicht?


```
YourApplicationClassExtendsApplication bla = new YourApplicationClassExtendsApplication();
bla.launch();
```

[edit]evtl. halt noch null als Argument für den launch()-Aufruf mitgeben...[/edit]


----------



## JavaFXer (8. Okt 2012)

Hi,

das mit dem .launch() habe ich probiert. Es sieht allerdings so aus, das Netbeans aus irgendeinem Grunde aber immer die JavaExtendsApplucation Class direkt aufruft. Muss ich da vielleicht etwas einstellen??? Sorry, aber ich komme von Eclipse und die JavaFX Bücher basieren alle auf Netbeans...


----------



## jgh (8. Okt 2012)

```
/**
     * The main() method is ignored in correctly deployed JavaFX 
     * application. main() serves only as fallback in case the 
     * application can not be launched through deployment artifacts,
     * e.g., in IDEs with limited FX support. NetBeans ignores main().
     * @param args the command line arguments
     */
```

ok, evtl. sollte ich vorher mal lesen...bin eigentlich auch eclipser und nur für ein wenig FX zu netbeans gewechselt.

hässlicher workaround wäre deine Klassen in der init Methode zu laden...aber falls du den korrekten Weg finden solltest, lass mal hören wie das so geht  bitte


----------



## JavaFXer (8. Okt 2012)

So,

ich habe es jetzt erstmal so gelöst, dass ich in der "normalen" Java-Startklasse folgenden Aufruf tätige:


```
JavaFXApplication app = new JavaFXApplication();
       app.main(null);
```

Dann klappt es soweit, die Frage ist allerdings, ob dies der richtige bzw. sauber Weg ist. Ich bin echt für alle Hinweise dankbar!


----------



## Kar (8. Okt 2012)

Deine Initialisierungen kannst du im Standardkonstruktor vornehmen oder in der start()-Methode. Falls du mit FXML arbeitest, kannst du auch die initialize-Methode des Controllers dafür nutzen.


----------



## JavaFXer (8. Okt 2012)

Danke Kar, die Varinten funktionieren auch! Welches ist denn nun der "Standardweg"?


----------



## Kar (8. Okt 2012)

Wenn ich mir dir Samples aus Ensemble (JavaFX Samples) anschaue, werden die Initialisierungen in eine Methode ausgelagert, die aus der start()-Methode aufgerufen wird.

```
public class Main extends Application {
  private void init(Stage stage) {
    // Initialisierungen
  }
 
  @Override
  public void start(Stage stage) throws Exception {
    init(stage);
    // ...
  }

  public static void main(String[] args) {
    launch(args);
  }
}
```
Muss natürlich nicht das Stage-Objekt übergeben werden, wenn es nicht gebraucht wird.


----------

