2017-07-18 4 views
-1

J'ai un ChoiceDialog dans mon application JavaFX, et pour la vie de moi ne peut pas comprendre quels éléments CSS sont nécessaires pour changer l'aspect et la convivialité de celui-ci. Mes autres fenêtres de dialogue semblent être affectées par mon fichier CSS externe, donc je suppose que c'est un élément que je ne connais pas.JavaFX ChoiceDialog CSS

Aussi, ce serait de remplacer le modena CSS.

J'ai essayé:

.dialog-pane { 
-fx-background-color: black; 
} 

.dialog-pane .label { 
-fx-text-fill: white; 
} 

.dialog-pane:header .header-panel { 
-fx-background-color: black; 
} 

.dialog-pane:header .header-panel .label { 
-fx-font-style: italic; 
-fx-font-size: 2em; 
} 

J'ai essayé aussi:

.choice-dialog .dialog-pane { 
-fx-background-color: black; 
} 

.choice-dialog .dialog-pane .label { 
-fx-text-fill: white; 
} 

.choice-dialog .dialog-pane:header .header-panel { 
-fx-background-color: black; 
} 

.choice-dialog .dialog-pane:header .header-panel .label { 
-fx-font-style: italic; 
-fx-font-size: 2em; 
} 

Outre quelques autres variantes de ces 2 (.choice-dialogue &-volet .dialog) Une autre chose J'ai essayé (après avoir regardé le fichier modena.css) était de changer l'icône qui s'affiche dans le ChoiceDialog en procédant comme suit:

de

.choice-dialog.dialog-pane { 
-fx-graphic: url("dialog-confirm.png"); 
} 

à

.choice-dialog.dialog-pane { 
-fx-graphic: url("dialog-warning.png"); 
} 

bien que cela n'a donné aucun résultat non plus.

MISE À JOUR

Je mis à jour mon fichier CSS personnalisé, enlevé tout et refait le css mentionné ci-dessus. Le premier bloc de CSS change seulement DialogPane, pas un ChoiceDialog. La deuxième et la troisième n'ont rien fait du tout.

Voici le code que j'utilisé pour créer le ChoiceDialog

ChoiceDialog<String> dialog = new ChoiceDialog<>("district", choices); 
dialog.setTitle("Object Selection"); 
dialog.setHeaderText("Which object should the file inherit from?"); 
dialog.setContentText("Default Object:"); 

Stage dialogStage = (Stage) dialog.getDialogPane().getScene().getWindow(); 
dialogStage.getIcons().add(icon); 
dialogStage.initOwner(stage); 

Optional<String> response = dialog.showAndWait(); 
response.ifPresent(chosen -> 
{ 
    //It does something... 
}); 

ChoiceDialog

Dialog<ObservableList<DataFilter>> dialog = new Dialog<>(); 
dialog.getDialogPane().setPrefSize(620, 430); 
dialog.setTitle("Field Filter"); 
dialog.getDialogPane().getButtonTypes().addAll(save_bt, cancel_bt); 
dialog.initOwner(stage); 
dialog.setResultConverter((ButtonType b) -> 
{ 
    if (b == save_bt) 
    { 
     return FXCollections.observableArrayList(dataFilters); 
    } 
    return null; 
}); 

Stage stage = (Stage) dialog.getDialogPane().getScene().getWindow(); 
stage.getIcons().add(icon); 

DialogPane

+0

Pouvez-vous donner un peu plus de détails? Quel style essayez-vous d'appliquer, et qu'avez-vous réellement essayé pour l'appliquer? Poster un [MCVE]. –

+0

Mise à jour pour montrer ce que j'ai essayé. –

+0

Avez-vous essayé '.choice-dialog.dialog-pane' (comme dans l'extrait que vous avez posté de modena.css, sans l'espace), au lieu de' .choice-dialog .dialog-pane' (avec l'espace)? La fonction 'url (...)' va rechercher le fichier image par rapport au fichier CSS, donc à moins que vous n'en ayez un, cet extrait ne fonctionnera pas. Si ces corrections ne fonctionnent pas, je vous recommande de poster un [MCVE]. –

Répondre

0

m'a fallu une heure d'expériences. Quelques autres sélecteurs sont dans modena.css sous "STYLES FOR COMBOBOX BASE SUR LISTVIEW PAR DEFAUT"

.dialog-pane{ 
-fx-background-color: #7160DC; 
    } 
.dialog-pane > *.button-bar > *.container{ 
-fx-background-color: #7160DC; 
    } 
    .dialog-pane > .content .label{ 
    -fx-font-size: 15px; 
    -fx-font-weight: bold; 
    -fx-text-fill: orange; 
    } 
    .dialog-pane:header .header-panel{ 
    -fx-background-color: #9589DF; 
    } 
    .dialog-pane:header .header-panel .label{ 
    -fx-font-size: 18px; 
    -fx-font-style: italic; 
    } 

    .button{ 
    -fx-background-color:black; 
    -fx-text-fill:white; 
    } 

    .button:hover{  
    -fx-background-color:orange; 
    -fx-text-fill:black; 
    -fx-font-weight:bold; 
    } 

    /* styles background of cover choice*/ 
    .combo-box { 
    -fx-background-color: black; 
    -fx-font-weight: bold; 
    } 
    /* styles text of cover choice*/ 
    .combo-box > .list-cell { 
    -fx-text-fill: yellow; 
    } 

.combo-box-popup > .list-view { 
-fx-background-color:black; 
-fx-background-insets: 0, 1; 
-fx-effect: dropshadow(gaussian , rgba(0,0,0,0.2) , 12, 0.0 , 0 , 8); 
} 

.combo-box-popup > .list-view > .virtual-flow > .clipped-container > .sheet > .list-cell { 
-fx-padding: 4 0 4 5; 
-fx-background: black; 
} 

.combo-box-popup > .list-view > .virtual-flow > .clipped-container > .sheet 
> .list-cell:filled:hover { 
-fx-background-color: orange; 
-fx-text-fill: black; 
} 

//add the above .css file as stylesheet 

ChoiceDialog dialog = new ChoiceDialog(); 
    dialog.setTitle("Confirmation"); 
    dialog.setContentText("Some Text"); 
    DialogPane dp = dialog.getDialogPane(); 
    dp.getStylesheets().add(getClass().getResource("myCssFile.css") 
    .toExternalForm()); 
    Optional<String> result = dialog.showAndWait(); 
+0

Qu'est-ce que c'est? Comment répond-il à la question? Qu'est ce que ça fait? https://stackoverflow.com/help/how-to-answer – Rob

+0

Ceci est un fichier .css et répond à la question "Comment créer un ChoiceDialog"? Il fait du style après l'avoir ajouté en tant que feuille de style au ChoiceDialog.Je vais mettre à jour la réponse avec du code comment ajouter une feuille de style. – Helmwag

+0

Pas mon point. Ce que je veux dire, c'est que vous ne devriez pas laisser échapper le balisage sans explication. Personne n'apprend de cela. – Rob