SettingsPane
peut automatiquement sélectionner un éditeur pour les propriétés. Dans ses doecs il ditQuel est le mappage entre les types de propriétés et leurs éditeurs dans un panneau SettingsPane?
The SettingsPane control is designed to make it really easy for developers to present to end users a list of options that can be modified, using proper built-in editors according the type of those options.
J'ai 2 questions à cet égard:
Quel composant est choisi pour chaque type de propriété? J'ai vu que les booléens ont la bascule droite-gauche, les nombres ont un champ de texte,
ObjectProperty<Color>
a un sélecteur de couleur (qui sur le bureau apparaît - je ne sais pas ce qui se passera sur le mobile?). Quels sont les autres mappings?Lorsque j'essaie d'avoir une propriété enum:
ObjectProperty<EnumType>
Je reçois une erreur pour aucun moteur de rendu. Je penserais qu'un combobox serait le choix par défaut pour choisir parmi un nombre connu de constantes d'énumération, n'est-ce pas? Je sais que je peux le faire avec l'éditeur moi-même, mais je voulais quand même poser une question à ce sujet, peut-être comme suggestion si je ne me suis pas trompé.
Modifier
Je suis à la recherche de nouveau l'exemple SettingPane pour l'éditeur personnalisé: http://docs.gluonhq.com/charm/javadoc/4.3.7/com/gluonhq/charm/glisten/control/SettingsPane.html et je remarque 2 problèmes:
Dans le code exemple de case à cocher éditeur voir mes commentaires:
public class CheckBoxEditor implements OptionEditor<Boolean> { private final CheckBox checkBox; public CheckBoxEditor(Option<Boolean> option) { this.checkBox = new CheckBox(); valueProperty().bindBidirectional(option.valueProperty()); }} // only 1 } @Override public Node getEditor() { return checkBox; } @Override public final Property<Boolean> valueProperty() { return checkBox.selectedProperty(); } @Override public Boolean getValue() { return checkBox.isSelected(); } @Override public void setValue(Boolean value) { checkBox.setSelected(value); } // missing }
Dans l'exemple d'utilisation:
final Option<BooleanProperty> dateOption = new DefaultOption(MaterialDesignIcon.DATE_RANGE.graphic(), "Show Date", "Show the date", "Category", settings.showDateProperty(), true, option -> new CheckBoxEditor((Option<Boolean>) option));
lambda me donne une erreur de compilation:
Type mismatch: cannot convert from CheckBoxEditor to OptionEditor<BooleanProperty>
et option
est de type Option<BooleanProperty>
et la distribution est à Option<Boolean>
. Une erreur?
Après avoir testé j'ai trouvé que l'erreur pour l'ENUM dans ma deuxième question se produit lorsque la valeur de la propriété est nulle, alors ceci est imprimé 'erreur, aucune option de rendu pour:
Pour chaque propriété, vous avez besoin d'un moyen de rendre sa valeur. Vous pouvez définir un convertisseur si vous en avez besoin. Comme pour le générique, l'utilisation de 'new DefaultOption <>' fonctionne correctement si vous utilisez l'éditeur par défaut, mais lorsque vous ajoutez l'éditeur personnalisé, les types 'BooleanProperty' et' Boolean' ne correspondent pas, et vous ne pouvez pas. Cela fonctionnerait si le type pour l'option était simplement 'Boolean' (avec' wifi.getValue() '), mais alors il ne serait pas observable. –
Hey, pouvez-vous jeter un oeil à cette question https://stackoverflow.com/questions/46815240/dialog-causes-drag-done-events-to-not-propagate s'il vous plaît? – Mark