JavaFX Ladehinweis

jimb0p

Erfahrenes Mitglied
Hallo Zusammen,

ich möchte in meiner JavaFX Anwendung dem Benutzer deutlich machen wenn er sich einen Moment gedulden muss und habe dafür eine kleine AnchorPane angelegt in der sich eine Blume dreht und "Bitte warten..." steht. Wenn ich die allerdings anzeigen lassen möchte sobald die ganzen Datenbank Befehle ausgeführt werden, dann erscheint die kleine Stage, allerdings nicht der Text und die Blume. Woran liegt das? Und was ist normalerweise die beste Möglichkeit dem Benutzer zu verdeutlichen dass er einen Moment warten muss. Hier noch mein Code für die Stage:

Java:
//Schließt Bitte warten...
    public void hideLoading(){
        waitStage.close();
    }
  
    //Zeigt Bitte warten...
    public void showLoading(Stage ownerStage){
        try {
            FXMLLoader loader = new FXMLLoader();
            loader.setLocation(MainApp.class.getResource("/de/ernst/view/Loading.fxml"));
            AnchorPane page = (AnchorPane) loader.load();

            waitStage = new Stage();
            waitStage.setTitle("Bitte warten");
            waitStage.getIcons().add(new Image(getClass().getResourceAsStream("logo.png")));//setzt das Icon
            waitStage.initModality(Modality.WINDOW_MODAL);
            waitStage.initOwner(ownerStage);
            Scene scene = new Scene(page);
            waitStage.setScene(scene);
            waitStage.show();  
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

und hier die Stelle wo ich sie aufrufe:
Java:
private void sharePostings(ArrayList<SocialMediaEntry> entryList){
        mainApp.showLoading(stage);
        db.setAutoCommit(false);
        ArrayList<Long> kSocialList = new ArrayList<Long>();
        ArrayList<Long> kPicIdList = new ArrayList<Long>();
        try{
            for(SocialMediaEntry entry : entryList){
                Long kSocial = db.addToTimeQueue(entry);
                kSocialList.add(kSocial);
            }
            if(picsForPost.size()>0){
                for(File pic : picsForPost){
                    try {
                        Long kPicId = db.addPicsToPrimaryKey(helper.getByteArrayToPicturePath(pic.getAbsolutePath()));
                        kPicIdList.add(kPicId);
                    }catch (Exception e) {
                        alert.exceptionAlert("Fehler", "Fehler beim Speichern der Bilder", e);
                    }
                }
                for(Long tmpkSocial : kSocialList){
                    for(Long tmpkPicId : kPicIdList){
                        db.addImgPostRelation(tmpkSocial, tmpkPicId);
                    }
                }
                picsForPost.clear();
            }
            db.commitToDb();
            mainApp.hideLoading();
            alert.infoMessage("Erfolgreich gespeicher", "Der Post für "+cArtNr+" wurde erfolgreich gespeichert");
        }catch (SQLException e) {
            alert.exceptionAlert(e);
        }
    }

Danke & Gruß!
 

jimb0p

Erfahrenes Mitglied
Es würde auch gehen ohne die drehende Blume, nur das sich jeweils ein Statussatz ändert, je nachdem was gerade gemacht wird, nur meine Ladeansicht zeigt einfach gar nix an. Jemand eine Idee?