如果我遵循此处描述的JavaFX属性定义,那么我尝试执行的操作将正常工作。现在,我想使用Java Beans属性适配器从Java
Beans对象定义属性。由于没有文档,我无法弄清楚它是如何工作的。
假设我有一个简单的POJO类:
public class Person {
private String name;
public String getName() {
return name;
}
public void setName( String name ) {
this.name = name;
}
}
和一个PersonProperty:
public class PersonProperty {
private Person person = new Person();
private JavaBeanStringProperty name;
public PersonProperty() throws NoSuchMethodException {
name = JavaBeanStringPropertyBuilder.create().bean( person ).name( "name" ).build();
}
public Person getPerson() {
return person;
}
public void setPerson( Person person ) {
this.person = person;
}
public JavaBeanStringProperty nameProperty() {
return name;
}
}
最后是一个测试:
public void personTest() throws NoSuchMethodException {
PersonProperty pp = new PersonProperty();
pp.getPerson().setName( "A" );
pp.getPerson().setName( "B" );
pp.nameProperty().addListener( new ChangeListener<String>() {
@Override
public void changed( ObservableValue<? extends String> ov, String t, String t1 ) {
System.out.println( "from " + t + " to " + t1 );
}
} );
pp.getPerson().setName( "C" );
pp.getPerson().setName( "D" );
}
我希望看到:
from B to C
from C to D
而是什么也没有出现。
如果我pp.nameProperty().set("E")
在personTest的末尾添加from B to E
我认为这里的问题是Person确实是POJO,但不是JavaBean:它缺少PropertyChangeListeners的钩子。Java不会神奇地知道Person#name何时更改。相反,JavaFX适配器将寻找一种添加PropertyChangeListener并侦听名为“
name”的属性的事件的方法。如果将PropertyChangeSupport实例添加到Person类,它将按预期工作:
public class Person {
private String name;
private PropertyChangeSupport _changeSupport;
public Person() {
_changeSupport = new PropertyChangeSupport(this);
}
public String getName() {
return name;
}
public void setName( String name ) {
final String prev = this.name;
this.name = name;
_changeSupport.firePropertyChange("name", prev, name);
}
public void addPropertyChangeListener(final PropertyChangeListener listener) {
_changeSupport.addPropertyChangeListener(listener);
}
}
我试图初始化log4j记录器使用SpringIOC和使用财产onfigurator.configure配置记录器,但财产onfigurator.configure不工作。 我的问题是如何将配置(log4j.properties)传递给Logger类? 波姆。xml 混淆班 log4j。性质
问题内容: 第一次使用Java开发,第一次使用Android开发,因此这是一个新手问题。 我目前有以下代码: 简短问题: 什么是 的.class 属性来完成,f.ex. 在’ C = NewTourny 的.class ‘? 为什么我不能将c转换为Tourny(所有这些类的父类)? 长问题: 目前,这可以处理整个应用程序中的所有按钮导航,并且工作正常。但是,如您所见,当我将c强制转换为Class时
我想让导航栏贴在视区的顶部,一旦用户滚动页面,但它不起作用,我不知道为什么。如果你能帮忙,这里是我的HTML和CSS代码: null null
问题内容: 我已经成功地使用了Python属性,但看不到它们如何工作。如果我取消引用类之外的属性,我只会得到一个类型的对象: 但是,如果我将一个属性放在一个类中,则行为会大不相同: 我注意到未绑定仍然是对象,因此类实例化必须在做魔术,但是那是什么魔术呢? 问题答案: 正如其他人指出的那样,它们使用称为描述符的语言功能。 当您通过类访问实际属性对象时,返回该属性对象的原因在于该属性如何实现特殊方法:
我们知道,在maven项目中,我们可以设置以下属性来为插件maven-compiler-plugin指定java版本: 问题是,如果要使用上述属性,我们是否应该在本地安装jdk8呢?
我只是写了一些小代码试图让我的KeyEvent管理器工作。 正如你所见,我创建了一个JFrame并添加了gameComponent,它是Game类的一个对象。我将JPanel设置为可调焦,并请求调焦。然后将名为TAdapter的KeyAdapter设置为KeyAdapter。您可以在代码的最底层看到该类,它扩展了KeyAdapter和方法keyPressed()。 我告诉程序在按下一个键时将“按下