2012-03-09 10 views
8

Mam problem z tworzeniem java gui IntelliJ użytkownika. Większość kodu za panelem jest niestety ukryta w gui twórcy, a nie edytowalna przeze mnie.IntelliJ gui twórca: JPanel daje wykonania pustego wskaźnika wyjątek na dodanie dowolnego komponentu

Utworzono pustą "QuestionPanel JPanel" za pomocą GridLayoutManager ItelliJ. Gdy próbuję dodać coś do tego panelu, otrzymuję wyjątek wskaźnika pustego, mimo że panel zdecydowanie nie jest pusty. Próbowałem również dodać JTextField do układu (z ciekawości) i to też nie pomogło. Pojawia się JTextField, ale nadal nie mogę dodać niczego z wewnątrz kodu.

Po zmianie menedżera układu na cokolwiek innego (GridBagLayout, FormLayout, BorderLayout itp.) Nie występują już błędy, ale nic się nie pokazuje.

DisplayView.java

private JPanel questionPane; 

public void initialize() 
{ 
    questionPane.addMouseListener(new MouseListener() { 

     @Override 
     public void mouseReleased(MouseEvent e) { 
      questionPane.add(new JLabel("Test")); 
      System.out.println("Click event received."); 
     } 
     //other overrides hidden 
} 

Czy ktoś ma pomysł, co się dzieje za kulisami lub sposób dla mnie, aby elementy na panelu? Dzięki.

Próbka Śledzenie stosu (ten ślad nie jest wykonany przez tego samego kodu, jak wyżej, ale jest to ten sam błąd):

Exception occurred during event dispatching: 
java.lang.NullPointerException 

at com.intellij.uiDesigner.core.GridLayoutManager.addLayoutComponent(
GridLayoutManager.java:134) 

at java.awt.Container.addImpl(Container.java:1074) 
at java.awt.Container.add(Container.java:365) 
at [MyProject].UI.View.DisplayView$1.actionPerformed(DisplayView.java:91) 
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995) 
..... 
+0

Dla lepszej pomocy prędzej, POST [SSCCE] (http://sscce.org/). –

+0

Może sprawdziłeś tworzenie niestandardowe? –

Odpowiedz

11

Dla każdego, kto korzysta z GUI twórca IntelliJ i odbieranie ten sam błąd, ja naprawiono problem, ręcznie ustawiając menedżera układu panelu w kodzie zamiast wybierać różne menedżery układu w kreatorze GUI.

Przykład:

questionPane.setLayout(new BoxLayout(questionPane, BoxLayout.PAGE_AXIS)); 
0

IntelliJ IDEA GUI twórca pozwala także wstawiać obrazy jako etykiety. W tym celu utwórz etykietę w dowolnym miejscu, a także w jej konfiguracjach i automatach do wyboru miejsca, w którym wybierzesz ścieżkę do swojego obrazu. I to wszystko!!

1

mam ten sam błąd jak ty. Mam JPanel z Menedżerem układu ustawionym na GridLayoutManager Intellij. Kiedy próbowałem dodać dowolny składnik do tego panelu, otrzymałem wyjątek.

Potem poszedłem do edytora GUI i zmieniono na BorderLayout i wszystko działało dobrze. Nie wiem, dlaczego to nie działa.

1

Mam złożony problem jako błąd na JetBrains website i otrzymał następującą odpowiedź:

Dla fix NPE, prosimy dodać składnik dziecko do JPanel z GridLayoutManager z GridConstraints tak:

panel.add(new JLabel(), new GridConstraints(...)) 

lub użyć innego układu.

Korzystanie z GridConstraints rozwiązało problem dla mnie, tak samo jak przy użyciu innego menedżera LayoutManager.

ja skrócić & edytowany odpowiedź dla czytelności

Powiązane problemy