JavaFX属性使用指南

时间:2014-08-28 07:07:29

标签: javafx javafx-2

在询问之前,这个主题可以是议论性的,这里要求的响应只是指导性的,而不是明确的或硬性和快速的规则答案。话虽如此,我希望如果给出富有洞察力的回复,那么保留这个帖子是值得的,即使在发布了足够好的信息后它就会被关闭。

问题:随着JavaFX属性的出现,以及可以在JavaFX应用程序之外使用它,在将JavaFX属性合并到数据对象中时需要考虑哪些要点?

考虑以下示例:

class BasicPersonBean
{
    private String name;
    private PropertyChangeSupport propChgSup;

    BasicPersonBean(String name)
    {
        this.propChgSup = new PropertyChangeSupport(this);

        this.name = name;
    }

    BasicPersonBean() { this(null); }

    public String getName() { return this.name; }

    public void setName(String newValue)
    {
        String oldValue = this.getName();
        this.name = newValue;
        this.propChgSup("name", oldValue, newValue);
    }
}


class PersonBeanUsingJavaFXProperty
{
    private StringProperty name;
    private PropertyChangeSupport propChgSup;

    BasicPersonBean(String name)
    {
        this.propChgSup = new PropertyChangeSupport(this);

        this.name = new SimpleStringProperty(name);
    }

    BasicPersonBean() { this(null); }

    public StringProperty nameProperty() { return this.name; }

    public String getName() { return this.name.get(); }

    public void setName(String newValue)
    {
        String oldValue = this.getName();
        this.name.set(newValue);
        this.propChgSup("name", oldValue, newValue);
    }
}


这两个类都提供非常相似的功能。后者PersonBeanWithJavaFXProperty更像是“最终用户应用程序就绪”,例如JavaFX应用程序。虽然JavaFX确实有适配器类来帮助连接前一个类BasicPersonBean。

能够将双向绑定属性准备好连接到后一类的能力非常方便,更不用说省时了。

然而,总会有折衷。由于JavaFX属性相对较新,而且记录较少(与完善/成熟的标准/库/惯例相比),这些权衡是什么?

作为使用JavaFX Property的负面消息,陈述明显的权衡是处理和内存占用。但是,有一些方法可以通过使用半/全延迟加载来设置这些属性来抵消它。

另一个是使用JavaFX属性测试复杂性,是否可以就此方面提供一些解释或警示说明?在JavaFX属性教程中,讨论了内存占用和处理,但未提及测试方面。

总之,可以在这里编译一份优缺点列表,以帮助程序员做出决定 何时使用'非JavaFX属性'和'JavaFX属性'?

再次强调这只是教育和/或信息主题,并且没有或不应该是一个明确的答案。只需要考虑并做出明智的选择。

最后,打算添加'JavaFX Property'标签,但由于(我)声誉不足,它不存在且无法创建。如果'JavaFX Property'标签可以由其他人添加,请这样做,因为它比'javafx'更加相关和简洁。

0 个答案:

没有答案