IntelliJIdea + GUI Designer
От: yatul Россия  
Дата: 24.01.06 11:05
Оценка:
Есть диалог типа настроек в Миранде или ВинАмпе.
При выборе в дереве пункта пытаюсь показать справа окошко, но при добавлении выбрасывается NullPointerException, правда окошко отображается, зато потом при попытке его удалить, выбрасывается другой Exception типа такого объекта не добавлял, хотя специально даже храню его вне метода. Собственно вот код метода и кусок StackTrace. В чём глюк? если нетрудно комментарии по оптимизации и т.п. токо учу Java. Да забыл, все окошки нарисованы в GUI Designer'е... Может из-за этого?




   /*
    * here we store the pointer at current properties panel
    * we need this to coreectly remove panel after use
    */
    private JPanel p;

    /**
     * here we put another window at right pane
     * an d shows it description
     */
    private void onSelectionChanged() {
        Object o =  ((DefaultMutableTreeNode)treeProp.getLastSelectedPathComponent()).getUserObject();
   
        if(p != null)
            try {
                windowProp.remove(p);//удаляем старое окно
            } catch (Exception e) {
                e.printStackTrace(System.err);
            }
        if(!(o instanceof IPlugIn)) return;
        IPlugIn pl = (IPlugIn) o;
        p = pl.getSettingsWindow();

        if (p == null) {
            windowProp.invalidate();
            return;
        }

        p.setBounds(windowProp.getBounds());

        try{
            windowProp.add(p); //тут выбрасывается NullPointerException...
        } catch (Exception e){
            e.printStackTrace() ;
        }
        windowProp.invalidate();
    }


Вот собственно StackTrace:


       java.lang.NullPointerException
    at com.intellij.uiDesigner.core.GridLayoutManager.addLayoutComponent(GridLayoutManager.java:124)
    at java.awt.Container.addImpl(Container.java:664)
    at java.awt.Container.add(Container.java:307)
    at phoenix.Properties.onSelectionChanged(Properties.java:142)
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.