维度编辑器无法与我的 bean 定制器一起使用
我正在为我的 bean 编写定制器类。我的bean有两个属性:
- 颜色颜色
- 尺寸大小
我的类的来源:
public class MyBeanCustomizer extends JTabbedPane implements Customizer {
private PropertyEditor colorEditor;
private PropertyEditor sizeEditor;
private MyBean myBean;
public MyBeanCustomizer() {
colorEditor = PropertyEditorManager.findEditor(Color.class);
sizeEditor = PropertyEditorManager.findEditor(Dimension.class);
}
@Override
public void setObject(Object bean) {
this.myBean = (MyBean) bean;
colorEditor.setValue(myBean.getColor());
sizeEditor.setValue(myBean.getSize());
initialize();
}
private void initialize() {
JPanel colorPane = new JPanel();
colorEditor.addPropertyChangeListener(new PropertyChangeListener() {
@Override
public void propertyChange(PropertyChangeEvent evt) {
setColor((Color) colorEditor.getValue());
}
});
colorPane.add(colorEditor.getCustomEditor());
JPanel sizePane = new JPanel();
sizeEditor.addPropertyChangeListener(new PropertyChangeListener() {
@Override
public void propertyChange(PropertyChangeEvent evt) {
setSize((Dimension) sizeEditor
.getValue());
}
});
sizePane.add(sizeEditor.getCustomEditor());
addTab("Color", colorPane);
addTab("Size", sizePane);
}
public void setColor(Color newValue) {
if (myBean == null)
return;
Color oldValue = myBean.getColor();
myBean.setColor(newValue);
firePropertyChange("color", oldValue, newValue);
}
public void setSize(Dimension newValue) {
if (myBean == null)
return;
Dimension oldValue = myBean.getSize();
myBean.setSize(newValue);
firePropertyChange("size", oldValue, newValue);
}
}
当我尝试打开我的定制器时,我得到这个异常:
java.lang.NullPointerException
at org.netbeans.beaninfo.editors.PointCustomEditor.commonInit(PointCustomEditor.java:118)
at org.netbeans.beaninfo.editors.PointCustomEditor.<init>(PointCustomEditor.java:103)
at org.netbeans.beaninfo.editors.DimensionEditor.getCustomEditor(DimensionEditor.java:105)
at MyBeanCustomizer.initialize(MyBeanCustomizer.java:49)
at MyBeanCustomizer.setObject(MyBeanCustomizer.java:28)
at org.netbeans.modules.form.RADComponentNode.createCustomizer(RADComponentNode.java:490)
...
正如你所看到的,问题发生在内部 NetBeans 类。这是 NetBeans 错误吗?我在 setObject() 中设置了 sizeEditor 的值,所以一切都应该没问题。颜色编辑器运行良好。
I'm writing customizer class for my bean. My bean has two properties:
- Color color
- Dimension size
The source of my class:
public class MyBeanCustomizer extends JTabbedPane implements Customizer {
private PropertyEditor colorEditor;
private PropertyEditor sizeEditor;
private MyBean myBean;
public MyBeanCustomizer() {
colorEditor = PropertyEditorManager.findEditor(Color.class);
sizeEditor = PropertyEditorManager.findEditor(Dimension.class);
}
@Override
public void setObject(Object bean) {
this.myBean = (MyBean) bean;
colorEditor.setValue(myBean.getColor());
sizeEditor.setValue(myBean.getSize());
initialize();
}
private void initialize() {
JPanel colorPane = new JPanel();
colorEditor.addPropertyChangeListener(new PropertyChangeListener() {
@Override
public void propertyChange(PropertyChangeEvent evt) {
setColor((Color) colorEditor.getValue());
}
});
colorPane.add(colorEditor.getCustomEditor());
JPanel sizePane = new JPanel();
sizeEditor.addPropertyChangeListener(new PropertyChangeListener() {
@Override
public void propertyChange(PropertyChangeEvent evt) {
setSize((Dimension) sizeEditor
.getValue());
}
});
sizePane.add(sizeEditor.getCustomEditor());
addTab("Color", colorPane);
addTab("Size", sizePane);
}
public void setColor(Color newValue) {
if (myBean == null)
return;
Color oldValue = myBean.getColor();
myBean.setColor(newValue);
firePropertyChange("color", oldValue, newValue);
}
public void setSize(Dimension newValue) {
if (myBean == null)
return;
Dimension oldValue = myBean.getSize();
myBean.setSize(newValue);
firePropertyChange("size", oldValue, newValue);
}
}
When I try to open my customizer I get this exception:
java.lang.NullPointerException
at org.netbeans.beaninfo.editors.PointCustomEditor.commonInit(PointCustomEditor.java:118)
at org.netbeans.beaninfo.editors.PointCustomEditor.<init>(PointCustomEditor.java:103)
at org.netbeans.beaninfo.editors.DimensionEditor.getCustomEditor(DimensionEditor.java:105)
at MyBeanCustomizer.initialize(MyBeanCustomizer.java:49)
at MyBeanCustomizer.setObject(MyBeanCustomizer.java:28)
at org.netbeans.modules.form.RADComponentNode.createCustomizer(RADComponentNode.java:490)
...
As you can see the problem occurs in internal NetBeans classes. Is it NetBeans bug? I set sizeEditor's value in setObject() so it all should be fine. The colorEditor works well.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论