Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 设置中属性类型与其编辑器之间的映射是什么?_Java_Gluon Mobile - Fatal编程技术网

Java 设置中属性类型与其编辑器之间的映射是什么?

Java 设置中属性类型与其编辑器之间的映射是什么?,java,gluon-mobile,Java,Gluon Mobile,设置span可以自动为属性选择编辑器。在其doecs中,它说 SettingsPane控件的设计目的是使开发人员能够很容易地向最终用户提供一个选项列表,这些选项可以根据选项的类型使用适当的内置编辑器进行修改 在这方面,我有两个问题: 为每个属性类型选择哪个组件?我看到布尔型有左右切换,数字有一个文本字段,ObjectProperty有一个颜色选择器(在桌面上弹出-我不知道在手机上会发生什么?)。其余的映射是什么 当我尝试使用枚举属性:ObjectProperty时,由于没有渲染器,我得到一个错误

设置span
可以自动为属性选择编辑器。在其doecs中,它说

SettingsPane控件的设计目的是使开发人员能够很容易地向最终用户提供一个选项列表,这些选项可以根据选项的类型使用适当的内置编辑器进行修改

在这方面,我有两个问题:

  • 为每个属性类型选择哪个组件?我看到布尔型有左右切换,数字有一个文本字段,
    ObjectProperty
    有一个颜色选择器(在桌面上弹出-我不知道在手机上会发生什么?)。其余的映射是什么

  • 当我尝试使用枚举属性:
    ObjectProperty
    时,由于没有渲染器,我得到一个错误。我认为组合框是从已知数量的枚举常量中进行选择的默认值,不是吗?我知道我自己可以通过编辑工厂做到这一点,但我想问一下这个问题,如果我没有犯错误的话,也许可以作为一个建议

  • 编辑

    我再次查看自定义编辑器的设置窗格示例: 我注意到两个问题:

  • 在复选框编辑器的示例代码中,请参见我的注释:

    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 }
    
    公共类CheckBoxEditor实现OptionEditor{
    私人最终复选框;
    公共复选框编辑器(选项){
    this.checkBox=新建复选框();
    valueProperty().bindproduction(option.valueProperty());
    }}//只有1}
    @重写公共节点getEditor(){return checkBox;}
    @重写公共最终属性valueProperty(){返回复选框。selectedProperty();}
    @重写公共布尔getValue(){return checkBox.isSelected();}
    @重写公共void setValue(布尔值){checkBox.setSelected(值);}
    //失踪}
    
  • 在用法示例中:

    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));
    
    final Option dateOption=new DefaultOption(MaterialDesignIcon.DATE\u RANGE.graphic(),
    “显示日期”、“显示日期”、“类别”、设置。showDateProperty(),true,
    选项->新建复选框编辑器((选项)选项));
    
  • lambda给了我一个编译错误:

    Type mismatch: cannot convert from CheckBoxEditor to OptionEditor<BooleanProperty>
    
    类型不匹配:无法从CheckBoxEditor转换为OptionEditor
    

    选项
    的类型为
    选项
    ,演员阵容为
    选项
    。错误?

    设置span的默认编辑器是:

    • 字符串:
      TextField
    • 数字(字节和字节、短和短、整数和整数、长和长、浮点和浮点、双精度和双精度、大整数、大十进制):
      TextField
      ,并应用
      TextFormatter
    • 布尔值:
      切换按钮
    • LocalDate:
      日期选择器
    • 颜色/油漆:
      颜色选择器
    • 枚举:
      组合框
    您可以通过使用
    SettingsPane::setOptionEditorFactory
    设置自己的工厂来覆盖此设置,但您必须提供所有必需的编辑器

    您还可以覆盖特定编辑器,或者为给定类型添加自己的编辑器

    这是
    枚举
    选项的示例:

    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);
    
    enum OS{WINDOWS、MAC、LINUX、OTHER}
    ObjectProperty os=新的SimpleObject属性(os.MAC);
    Option OSOption=new DefaultOption(MaterialDesignIcon.LAPTOP.graphic(),“操作系统”,
    “设置首选操作系统”、“操作系统”、操作系统,true);
    

    关于JavaDoc,是的,这些是需要修复的打字错误。我已经提交并发布了

    关于运行示例,它按原样为我工作。有关WiFi选项,请参见上图:

    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));
    
    final BooleanProperty wifi=new simpleboleanproperty();
    最终选项wifiOption=新的默认选项(MaterialDesignIcon.WIFI.graphic(),
    “WiFi”、“设置WiFi或有线”、“设备”、WiFi、true、,
    选项->新建复选框编辑器((选项)选项));
    
    测试后,我发现第二个问题中的枚举错误发生在属性值为null时,然后这是打印的
    错误,没有呈现选项:
    。至于lambda编译错误,我发现如果将
    DefaultOption
    设置为generic(
    DefaultOption
    DefaultOption
    )。不知道为什么。对于每个属性,您都需要一种呈现其值的方法。如果需要,可以定义转换器。对于泛型,如果使用默认编辑器,使用
    newdefaultoption
    可以很好地工作,但是在添加自定义编辑器时,类型
    BooleanProperty
    Boolean
    不匹配,您也不能。如果选项的类型只是
    Boolean
    (使用
    wifi.getValue()
    ),它就可以工作了,但这样就看不到了。嘿,你能看看这个问题吗?