2017-09-10 6 views
1

SettingsPaneは、プロパティのエディタを自動的に選択できます。コンポーネントは、各プロパティのタイプのために選択されているSettingsPane内のプロパティタイプとそのエディタ間のマッピングは何ですか?

  1. :?そのdoecsでは、それは私がこの点で2つの質問を持っている

    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.

    を語りますかブーリアンの右端にはトグルがあり、数字にはテキストフィールドがあり、ObjectProperty<Color>にはカラーチェッカーがあります(デスクトップではポップアウトしますが、モバイルではどうなるのでしょうか?)。残りのマッピングは何ですか?

  2. enumプロパティを設定しようとすると、ObjectProperty<EnumType>レンダラーがないとエラーが発生します。私は、コンボボックスが、既知の数の列挙型定数から選択するためのデフォルトになると思うでしょうか?私はエディターの工場でそれを実現できると知っていますが、とにかくこれについて質問したかったのですが、もし私が間違いをしなかったならば、示唆になるかもしれません。

編集

私は、カスタムエディタのSettingPane例で再び探しています:http://docs.gluonhq.com/charm/javadoc/4.3.7/com/gluonhq/charm/glisten/control/SettingsPane.html と私は2つの問題気づい:のコード例では

  1. をチェックボックスのエディタ私のコメントを参照してください:

    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 } 
    
  2. 使用例では:

    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)); 
    

ラムダは私にコンパイルエラーを与える:

Type mismatch: cannot convert from CheckBoxEditor to OptionEditor<BooleanProperty> 

optionはタイプOption<BooleanProperty>のものであり、キャストはOption<Boolean>にあります。間違い? SettingsPanecontrolため

答えて

1

デフォルトのエディタは、次のとおりです。

  • 文字列:TextField
  • 数字(バイトとバイト、intと整数、longとlong、floatとfloat、doubleとdouble、BigInteger、BigDecimal):TextFieldにはTextFormatterが適用されます。
  • ブール値:ToggleButton
  • ローカル日時:DatePicker
  • カラー/ペイント:ColorPicker
  • 列挙体:ComboBox

SettingsPane::setOptionEditorFactoryで独自の工場を設定することでこれを無効にできますが、必要なすべてのエディタを用意する必要があります。

特定のエディタを無効にすることも、特定の種類のエディタを追加することもできます。

これはEnumオプションのサンプルです:のJavaDocについて

enum OS { WINDOWS, MAC, LINUX, OTHER } 

ObjectProperty<OS> os = new SimpleObjectProperty<>(OS.MAC); 

Option<OS> OSOption = new DefaultOption(MaterialDesignIcon.LAPTOP.graphic(), "Operative System", 
      "Set the preferred OS", "Operative System", os, true); 

、はい、それらは固定必要タイプミスです。私はそれを提出し、発行しました。

サンプルの実行については、そのまま動作します。無線LANオプションに、上記の写真を参照してください。

final BooleanProperty wifi = new SimpleBooleanProperty(); 
final Option<BooleanProperty> wifiOption = new DefaultOption(MaterialDesignIcon.WIFI.graphic(), 
      "WiFi", "Set Wifi or Wire", "Devices", wifi, true, 
      option -> new CheckBoxEditor((Option<Boolean>) option)); 
+0

私はレンダリングオプション、プロパティの値がnullのとき、私の2番目の質問が起こるに列挙型のエラーが、これは印刷 'エラーであることがわかっていないテストした後for:

+0

すべてのプロパティについて、その値をレンダリングする方法が必要です。必要に応じてコンバータを定義することができます。ジェネリックに関しては、 'new DefaultOption <>'を使うとデフォルトのエディタを使うとうまくいきますが、カスタムエディタを追加するときに 'BooleanProperty'と' Boolean'の型が一致せず、できません。 Optionの型が単に 'Boolean'(' wifi.getValue() ')であれば動作しますが、それは観測できません。 –

+0

ねえ、この質問を見ることができますかhttps://stackoverflow.com/questions/46815240/dialog-causes-drag-done-events-to-not-propagate? – Mark

関連する問題