Редактор измерений не работает с настройщиком моего компонента - PullRequest
1 голос
/ 15 ноября 2011

Я пишу класс настройщика для моего компонента.У моего боба есть два свойства:

  • Цвет Цвет
  • Размер Размер

Источник моегокласс:

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?Я установил значение sizeEditor в setObject (), так что все должно быть в порядке.ColorEditor работает хорошо.

...