当前位置: 首页 > 知识库问答 >
问题:

在数据模型中使用javafx属性和绑定

娄浩荡
2023-03-14

javafx属性是将数据模型连接到javafx gui的好方法,因为它们的绑定模型实现了强大的通知更新机制。

属性和绑定并不严格地与GUI相关,而是对JavaBeans的扩展。

因此,我们希望在应用程序模型类中使用它们,而不引入对包javafx.beans.property.StringProperty的依赖关系,并且通常来自javafx.*.

换句话说:(update)
我可能需要将应用程序分成两个模块。
一个模块应该只包含操作数据的类(模型类,说MVC)。
第二个模块将包含所有图形化的gui内容,即javafx.

如果我的数据类使用javafx绑定,我将引入一个导入javafx.beans.anythy;(最好是绑定是java.*或javax.*的一部分,这样我就不会将“gui库”引用到核心数据库中)。javafx将包含在stardard发行版中,这一事实缓解了这一问题,但这似乎是一个棘手的解决方案。毕竟,我想我看到的是一个依赖于某个swing“实用工具”类的web应用程序。

是否有可用的选项?

我正在评估用listeneres创建常规javabeans属性并将它们桥接到fx属性所需的工作量。

共有1个答案

安明亮
2023-03-14

将JavaFX对象绑定到POJO(Plain Old Java object)techinque可能会对您有所帮助。

可以用以下两个词来访问POJO对象:

    Person person = new Person();
    PathProperty prop = new PathProperty(
        person, "address.streetName", String.class);
    Bindings.bindBidirectional(prop, myTextField.textProperty());
    prop.set("123 1st Street");
 类似资料:
  • 问题内容: 在模型类中使用JavaFX bean属性是否正确? 我想知道在模型类中使用属​​性是否能够将它们与视图组件轻松绑定是否是一种好习惯。我不担心将来这些库的可用性,因为我的程序将在JRE8或更高版本上运行,但是在模型类中使用JavaFX库的性质使我持怀疑态度,并且我担心当前和将来的不兼容性,尤其是因为我想使用Hibernate来保留这些属性。 注意:我使用纯JavaFX环境,并且我的应用程

  • 我有一个ASP. NET核心Web API。 一个endpoint,它接受一个名为搜索的模型。它有一个名为表达式类型查询的属性。这个表达式对象有子类。 我将以下JSON发布到我的endpoint(应用程序的内容类型/JSON) {"查询":{"字段ID":"主体","值":"蛋糕","运算符":"匹配"}} 首先,查询参数只是基本表达式——一个多态性问题! 所以我以为是定制的模型活页夹。 我可以针

  • 我有4个文本文件是通过FXML创建的。两个用于字符串模型类型。一个表示整数。一个给BigDecimal。问题发生在所有这些字段上(有时是一个字段,有时是几个字段)。因为我的数字字段可以有空值,所以我使用例如PropertyObject而不是IntegerProperty(来自openjfx的人建议这样做)。 那么这个是JavaFx bug还是什么?附言。我用felix osgi、weld cdi和

  • 问题内容: 我有一个带有文本字段和按钮的简单fxml。如果文本字段为空,我想禁用按钮。所以我在控制器中插入如下内容: ..那很好。问题是当我添加第二个文本字段时,如果其中一个文本字段为空,希望禁用我的按钮。那该怎么办?我尝试了以下操作,但这不起作用: 问题答案: 可以通过以下方式绑定到布尔表达式:

  • 我有一个带有文本字段和按钮的简单fxml。如果文本字段为空,我想禁用按钮。所以我在我的控制器中插入如下内容: ..这很好用。问题是,当我添加第二个文本字段时,如果其中一个文本字段为空,我希望禁用我的按钮。那怎么办呢?我尝试了以下方法,但不起作用:

  • 我有一个ASP。NET核心Web APIendpoint,它接受(FromBody)下面定义的搜索对象 因此...如果我将以下JSON发布到我的endpoint {“pageSize”:10,“query”:{“fieldId”:“body”,“value”:“cake”,“operator”:“matches”} 我成功地获取了一个搜索对象,但查询属性的类型是Expression,而不是Matc