Java main Methode aufrufen?

2 Antworten

So wie ich das verstehe, möchtest du die main-Methode deiner Anwendung aufrufen. Das wäre keine gute Lösung.

Lagere den Code stattdessen in eine eigene Methode aus.

public class Application {
  public static void main(String[] args) {
    Application application = new Application();
    View view = new View(application);

    application.doSomething();
  }

  public void doSomething() {
    // ...
  }
}

Die aufrufende Klasse kann eine Instanz der Klasse bekommen, die diese Methode enthält. Darüber ist dann auch der Aufruf in einem Action Listener möglich. Das folgende Snippet zeigt, wie ein Aufruf in Swing aussehen könnte.

class View {
  public View(Application application) {
    JFrame frame = new JFrame("Example");
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    JButton button = new JButton("Click me");
    button.addActionListener(evt -> application.doSomething());
    frame.add(button);
    frame.pack();
    frame.setVisible(true);
  }
}

spiderpic98 
Beitragsersteller
 30.05.2022, 14:15

Ja, das Problem ist, das ich mit Java fx arbeite und das ich also die Stage schließen muss. Jedoch ist stage eine lokale Variable in der Methode , welche ja durch Application überschrieben wird. Und ich kann dementsprechend die Stage nicht einfach public machen. Das gefällt dem nicht

0
regex9  30.05.2022, 14:44
@spiderpic98

Was hast du allgemein vor? Wieso muss die Stage geschlossen werden, wieso wird stage überschrieben?

Wenn du zwischen Fensteransichten wechseln möchtest, reicht es, eine neue Scene anzulegen.

@Override
public void start(Stage primaryStage) {
  // ...
  button.setOnAction((e) -> new WindowPage(primaryStage, scene));
  // ...
}

WindowPage:

public class WindowPage {
  private StackPane root;
  
  public WindowPage(Stage stage, Scene previousScene) {
    root = new StackPane();
    Scene scene = new Scene(root, 500, 500);
    stage.setScene(scene);
    stage.show();
  }
}

Das alte Scene-Objekt kann man mitnehmen, falls man auf der neuen Seite wieder via Button zurück zur vorherigen Seite möchte.

1
Von Experte FaTech bestätigt

Üblicherweise gibt es nur eine Main-Methode bzw. Klasse im ganzen Projekt und die ruft man auch nicht einfach so manuell auf.

Zudem lassen sich Klassen nicht "aufrufen". Klassen lassen sich mittels new-Keyword instanziieren.

Was auch immer du da also genau vorhast, du bist vermutlich auf dem falschen Weg.

Woher ich das weiß:Berufserfahrung – Informatiker Applikationsentwicklung