2012-03-09 4 views
8

IntelliJのJava GUIの作成に問題があります。パネルの背後にあるコードのほとんどは残念ながらGUI作成者の中に隠されていて編集可能ではありません。IntelliJ GUI作成者:JPanelは、コンポーネントの追加時にランタイムNULLポインター例外を発生します。

ItelliJ GridLayoutManagerで空のJPanel "questionPanel"を作成しました。 パネルに何かを追加しようとすると、パネルがヌルでないにもかかわらずnullポインタ例外が発生します。私はまたレイアウト(好奇心から)にJTextFieldを追加しようとしましたが、それはいずれも役に立たなかった。 JTextFieldが表示されますが、コード内から何も追加できません。

レイアウトマネージャを他のもの(GridBagLayout、FormLayout、BorderLayoutなど)に変更すると、エラーは発生しませんが、何も表示されません。

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 
} 

誰もシーンや、私がパネルにコンポーネントを入手するための方法の背後に何が起こっているかのアイデアを持っていますか?ありがとう。

サンプルスタックトレース(このトレースは、上記と同じコードで作られていないが、それは同じエラーである):、のIntelliJのGUIの作成者を使用して、同じエラーを受信して​​いる誰のために

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

のための答えを編集しました。 –

+0

カスタム作成をチェックした可能性がありますか? –

答えて

11

I GUIクリエーター内の異なるレイアウトマネージャーを選択する代わりに、パネルのレイアウトマネージャーをコード内に手動で設定することで問題を解決しました。

例:

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

のIntelliJ IDEAのGUIの作成者はまた、あなたがラベルとして画像を挿入することができます。そのためにはどこにでもラベルを作成し、その設定では画像のパスを選択するアイコンスロットを見つけます。以上です!!

1

私はあなたと同じエラーを受けました。私はLayout ManagerをGridLayoutManager Intellijに設定したJPanelを持っています。このパネルにコンポーネントを追加しようとすると、例外が発生していました。

その後、GUIエディタに入り、BorderLayoutに変更され、すべて正常に動作しました。なぜあなたのために働いていないのか分かりません。

1

私はJetBrains websiteにバグとして問題を提起して、次の答え受け取った:

:修正NPEについて

を、このような GridConstraintsでGridLayoutManager とのJPanelに子コンポーネントを追加してください

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

または他のレイアウトを使用しています。

GridConstraintsを使用すると、別のLayoutManagerを使用する場合と同じように問題が解決しました。私は&を短縮

は[SSCCE](http://sscce.org/)を投稿し、早いほど良いのヘルプについては、読みやすさ

関連する問題