2015-10-02 1 views
1

J'ai créé ma propre boîte de dialogue de progression personnalisée pour gérer les appels de serveur, en utilisant un cadre qui affichera l'alerte pendant que le thread d'arrière-plan est en cours d'exécution. Je n'ai pas utilisé Service/Task pour accomplir le threading en arrière-plan et par conséquent, je ne pouvais pas utiliser le ControlsFX ProgressAlert.Comment puis-je personnaliser le org.controlsfx.dialog.ProgressDialog de ControlsFX

Toutefois, pour les choses qui se déroulent uniquement sur l'interface utilisateur, je préfère l'utiliser si je le peux. Je n'arrive pas à comprendre comment les faire ressembler.

C'est ce que je voudrais:

enter image description here

Voici comment je tentais de faire ce travail avec ControlsFX:

ProgressDialog pd = new ProgressDialog(service); 
     pd.getDialogPane().setGraphic(new ImageView(new Image(getClass().getClassLoader().getResource("images/myImage.png").toExternalForm()))); 
     pd.setGraphic(new ImageView(new Image(getClass().getClassLoader().getResource("images/myImage.png").toExternalForm()))); 
     pd.setContentText("Reprinting Batch Header...."); 
     pd.setHeaderText("Please Wait..."); 
     pd.initModality(Modality.WINDOW_MODAL); 
     pd.initOwner(parent.getPrimaryStage()); 
     service.start(); 

Toutefois, cela ne place pas mon image où je comme ça et je ne suis pas sûr de savoir comment le changer.

enter image description here

Si possible, je voudrais que ces pour le style même.

Merci.

Répondre

2

Vous pouvez faire le match de texte en définissant les deux title et headerText:

pd.setTitle("Please Wait..."); 
pd.setHeaderText("This will take a moment..."); 

Vous pouvez définir contextText que vous êtes, ou votre l » taskservice pouvez appeler updateMessage("some message");. Ce message sera affiché dans la boîte de dialogue de progression contextText. Cela vous permet de mettre à jour le message contentText de la tâche pour indiquer à l'utilisateur ce qui se passe au fur et à mesure de l'avancement de la tâche.

L'image "info" est en cours de définition via css. Vous pouvez le modifier en remplaçant la feuille de style appliquée à la boîte de dialogue de progression:

pd.getDialogPane().getStylesheets().clear(); 
pd.getDialogPane().getStylesheets().add(YourClass.getResource("/path/to/yourcss.css").toExternalForm()); 

Indiquez ensuite l'image dans votre css:

.progress-dialog.dialog-pane { 
    -fx-graphic: url("path/to/image.png"); 
}