2015-06-25 2 views
-1

Я новичок в NetBeans, и у меня часто возникают проблемы с редактором gui, который заставляет меня тратить много часов на восстановление ранних версий и попытку снова. Я не понимаю почему это происходит, поэтому я не могу решить его.Почему мой редактор GUI NetBeans не работает?

Я родом из Eclipse, но Google swing gui builder ужасен и глючит (по крайней мере, на Linux), поэтому моя жена предложила NetBeans. Редактор намного лучше и более отзывчивый, но я больше не верю, потому что это наводит меня на меня.

Этап: У меня есть главное окно (с меню и т. Д.), Которое содержит (JPanels, которые содержат) два пользовательских JPanels. Они обычай, потому что я делаю для них простой рисунок (например, круговую диаграмму). У меня есть несколько панелей фиксированного размера, но размер одной настраиваемой панели вычисляется во время запуска и должен заполнять большую часть главного окна (и должен быть основной силой при определении размера главного окна).

Вот некоторые фрагменты из моего проекта, начиная с метода Main():

Main() { 
    controller = new FacadeController(this); 
    initComponents(); 
    jPanelMem.setController(controller); 
    // ... 
} 

Этот код был сгенерирован NetBeans, и я заполнил какой-то дополнительный код. В initComponents() (который, конечно, только для чтения,) выглядит следующим образом, вы можете видеть, я поместил пользовательскую панель:

private void initComponents() { 
    jPanelMemOuter = new javax.swing.JPanel(); 
    jPanelMem = new net.golfbravo.corewar.gui.JPanelMem(); 
    // ... 
    javax.swing.GroupLayout jPanelMemOuterLayout = new javax.swing.GroupLayout(jPanelMemOuter); 
    jPanelMemOuter.setLayout(jPanelMemOuterLayout); 
    // ... 
} 

Далее, вот часть раздела декларации (генерируется автоматически):

public final class Main extends javax.swing.JFrame { 
// ... 
private net.golfbravo.corewar.gui.JPanelMem jPanelMem; 
private javax.swing.JPanel jPanelMemOuter; 
// ... 

Так в чем проблема? Ну, иногда (включая прямо сейчас), панели есть, но не будут отображаться в редакторе, даже если они строят и работают просто отлично. В этот момент я прокомментировал большую часть класса JPanelMem и раскупил его кусочно, перезапустив NetBeans каждый раз (очень медленный метод). То, что у меня сейчас такая ситуация, когда это работает:

public final class JPanelMem extends JPanel { 

    // JPanelMem() { 
    //  super(); 
    // } 
    // ... 
} 

, но это не делает:

public final class JPanelMem extends JPanel { 

    JPanelMem() { 
     super(); 
    } 
    // ... 
} 

Этот последний бит вызывает редактор, чтобы показать сообщение об ошибке, говорящее:

Ошибка компонент загрузки [JFrame] -> [JPanelMemOuter] -> [JPanelMem]. Невозможно создать экземпляр net.golfbravo.corewar.gui.JPanelMem. Невозможно загрузить компонент.

Ошибка при загрузке макета: [JFrame] -> [JPanelMemOuter] -> [макет]. Не удалось инициализировать компоновку этого контейнера. ...

Что происходит дальше? Есть проблема с макетами, или это эффект домино от проблемы создания экземпляра? Как этот конструктор вреден, и как я могу инициализировать панель без него (вызывая setPreferredSize() и т. Д.)? Раньше это работало, но «что-то случилось», и теперь это.

Я видел suggestion, чтобы «сделать« очистить и построить »в вашем проекте», но это, похоже, не помогает в этом случае - проект строит и даже работает просто отлично, это только редактор gui что имеет проблемы.

PS. Может быть, мне нужно просто закодировать gui вручную. Просто gui не должен был быть главным фокусом этого проекта (а скорее, что происходит внутри приложения).

+0

Вы используете последнюю версию NetBeans? – user1438038

+0

'JPanelMem' находится в пределах пути к классу проекта, который вы пытаетесь использовать. Сделайте чистую и сборку и убедитесь, что класс действительно находится в пути класса проектов (например, проект связан через библиотеки, если он существует в другом проекте) – MadProgrammer

+0

@ user1438038, я использую NetBeans 8.0.2, который в настоящее время является самым новым. – KlaymenDK

ответ

0

Просто для того, чтобы следить, я выбросил все это. Не использовали NetBeans с тех пор (в котором говорится только о фактах, а не о намерениях NetBeans как таковых).

Смежные вопросы