我用于DTO POJO。对于桌面客户端GUI,我使用JavaFX。当然,我想有双向(不是单声道!)数据绑定。我找到了两个解决方案:
1)使用特殊的类适配器。例如,如果我们有POJO类Person,那么我们创建JavaFx(*Property)类PersonAdapter。此外,在POJO Person中,我们添加了PropertyChangesUpport。这个方法可以工作,但是每个DDPress.com/2012/06/14/javafx-Programmatic-POJO-Bindings/和以下javafx8代码https://github.com/jfxtras/jfxtras-labs/blob/8.0/src/main/java/jfxtras/labs/scene/control/beanPathAdapter.java。说实话,我不明白他们怎么会发现POJO是否发生了变化。换句话说,如果JavaFx发生了变化,POJO也发生了变化,这是很清楚的。但是如果POJO发生了变化呢?我想要测试一下这个谜
class Person{
private String name;
public void setName(String name){
this.name=name;
}
public String getName(){
return this.name;
}
}
和测试代码:
Person person=new Person();
SimpleStringProperty sp=new SimpleStringProperty();
BeanPathAdapter<Person> testPA = new BeanPathAdapter<>(person);
testPA.bindBidirectional("name", sp);
person.setName("Name1");
System.out.println("Test1:"+sp.get());
sp.set("Name2");
System.out.println("Test2:"+test.getName()
结果如下:
Test1:null
Test2:Name2
因此,我们看到javafx属性->pojo的工作方向。但是,pojo->JavaFX属性没有。或者我做错了什么,或者不管用?也许有人会消化更好的解决方案?
不幸的是,它不起作用。BindBiDirection不会修改bean以监听它的变化。您可能会与名称BindBiDirectional混淆。这可以解释为它双向绑定属性(在您的示例中为sp)和BeanPathAdapter内部属性。javafx->adapter(以及包装bean)和adapter->javafx。
因此,bean的更改不会影响适配器和绑定属性。但是我们如何在不改变属性和bean的情况下改变适配器呢?通过更改绑定到相同bean属性的另一个属性。例如:
Person person = new Person();
SimpleStringProperty firstProperty = new SimpleStringProperty();
SimpleStringProperty secondProperty = new SimpleStringProperty();
BeanPathAdapter<Person> testPA = new BeanPathAdapter<>(person);
testPA.bindBidirectional("name", firstProperty);
testPA.bindBidirectional("name", secondProperty);
firstProperty.set("fromFirst");
System.out.println("first:" + firstProperty.get() + " second=" + secondProperty.get() + " bean=" + person.getName());
secondProperty.set("fromSecond");
System.out.println("first:" + firstProperty.get() + " second=" + secondProperty.get() + " bean=" + person.getName());
person.setName("fromBean");
System.out.println("first:" + firstProperty.get() + " second=" + secondProperty.get() + " bean=" + person.getName());
结果如下:
first:fromFirst second=fromFirst bean=fromFirst
first:fromSecond second=fromSecond bean=fromSecond
first:fromSecond second=fromSecond bean=fromBean
问题内容: 我使用JavaFX NumberBindings来计算某些值。最初,一切正常。但是,经过相当短的时间后,绑定将停止工作。我也没有收到例外。 我已经尝试了几种绑定以及高级和低级方法。即使计算本身(被覆盖时)也只是停止并且不再被调用。我还更新到了最新的JDK(1.8.0_05),并重新构建/重新启动了所有内容。 以下最小工作示例说明了该问题。它应该将System.out.println主窗
我遵循了许多链接,找到了在表视图中显示复选框的解决方案。但我无法更改表视图中复选框的值。 链接如下:如何在JavaFX中将CheckBox添加到TableView中 模型类: FXML文件: 控制器类: 输出:
主要内容:绑定选项,双向绑定,高级别绑定,低级别绑定,UI控件和域模型之间的绑定JavaFX绑定同步两个值:当依赖变量更改时,其他变量更改。 要将属性绑定到另一个属性,请调用bind()方法,该方法在一个方向绑定值。 例如,当属性A绑定到属性B时,属性B的更改将更新属性A,但不可以反过来。 绑定选项 JavaFX提供了许多绑定选项,以便在域对象和GUI控件中的属性之间进行同步。 我们可以在JavaFX的Properties API中使用以下三种绑定策略: Java Bean上
我面临的问题,以开发一个演示JavaFX程序的图像查看作为一个新手。这里,我在BorderPane中心位置有一个ImageView,它用StackPane和VBox包装。其中StackPane总是与VBox一起增长,我将ImageView与StackPane Width和Height属性绑定在一起,这样当我调整窗口大小时,ImageView就会改变它的设置亮度和重量。它的工作很好,我想,但问题是,
下面是我的代码:
问题内容: 我正在探索python。我对python绑定感到好奇。任何人都可以解释一下,如何有可能从Python访问C库。 问题答案: 有几种方法可以从Python调用用C编写的代码。 首先,标准库中有ctypes模块。它允许您加载动态链接库(Windows上为DLL,Linux上为共享库)并直接从Python调用这些库中的函数。此类库通常用C编写。 其次,对于CPython,有Python /