मैं जावाएफएक्स में टेक्स्ट एडिटर पर काम कर रहा हूं और टेक्स्ट एडिटर खुलने से पहले मुझे एक छोटी स्टार्टअप विंडो चाहिए। मैं चाहता हूं कि स्टार्टअप विंडो समय के बाद बंद हो रही है और फिर टेक्स्ट एडिटर विंडो खुलती है। समस्या यह है कि जब मैं प्रोग्राम शुरू करता हूं तो स्टार्टअप विंडो नहीं दिख रही है। और जब समय समाप्त हो जाता है, तो टेक्स्टएडिटर विंडो शीघ्र ही दिखाई दे रही है लेकिन फिर प्रोग्राम क्रैश हो रहा है और मुझे सिंटेक्स-त्रुटि दिखाता है:

आमंत्रण लक्ष्य अपवाद

package sample;

import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.stage.Stage;
import javafx.stage.StageStyle;

public class Main extends Application {

    @Override
    public void start(Stage primaryStage) throws Exception {
        Parent root = FXMLLoader.load(getClass().getResource("sample.fxml"));

        MainWindow.openAnother(primaryStage);

        primaryStage.setScene(new Scene(root, 300, 200));
        primaryStage.initStyle(StageStyle.UNDECORATED);
        primaryStage.show();
    }

    public static void main(String[] args) {
        launch(args);
    }
}

मेनविंडो क्लास:

package sample;

import javafx.scene.Scene;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;

public class MainWindow {

    public static void openAnother(Stage primaryStage) {
        try {
            Thread.sleep(4345);
            primaryStage.close();
            Fenster(primaryStage);
        } catch(InterruptedException e) { }
    }

    public static void Fenster(Stage nextStage) {
        StackPane root = new StackPane();

        //TODO TextEditor-Code

        Scene scene = new Scene(root);
        nextStage.setScene(scene);
        nextStage.setFullScreen(true);
        nextStage.show();
    }
}
0
Disembleergon 48 19 मार्च 2020, 22:21

1 उत्तर

सबसे बढ़िया उत्तर

टाइमलाइन का प्रयोग करें।

यह उदाहरण एक स्प्लैश स्क्रीन स्टेज (प्राथमिकस्टेज) लॉन्च करता है, फिर तीन सेकंड बाद टेक्स्टएडिटरस्टेज दिखाता है और फिर एक सेकंड के बाद स्प्लैश स्क्रीन स्टेज बंद हो जाएगा।

import javafx.animation.KeyFrame;
import javafx.animation.Timeline;
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.layout.AnchorPane;
import javafx.stage.Stage;
import javafx.util.Duration;

public class Example extends Application {

  public static void main(String[] args) {
    launch(args);
  }

  @Override
  public void start(Stage primaryStage) throws Exception {
    primaryStage.setScene(new Scene(new AnchorPane(), 200, 200));
    primaryStage.setTitle("Splash Screen");
    primaryStage.setAlwaysOnTop(true);
    primaryStage.show();

    Timeline timeline = new Timeline(new KeyFrame(Duration.millis(3000), event -> {
      Stage textEditorStage = new Stage();
      textEditorStage.setScene(new Scene(new AnchorPane(), 400, 400));
      textEditorStage.setTitle("Text Editor");
      textEditorStage.show();
      Timeline timeline2 = new Timeline(new KeyFrame(Duration.millis(1000), event2 -> {
        primaryStage.close();
      }));
      timeline2.play();
    }));
    timeline.play();
  }
}
0
smbo_ 20 मार्च 2020, 17:52