2012-03-09 8 views
8

Tôi đang gặp vấn đề với việc tạo ra gui java của IntelliJ. Hầu hết các mã phía sau bảng điều khiển là tiếc là ẩn trong người sáng tạo gui và không thể chỉnh sửa bởi tôi.Trình tạo gui của IntelliJ: JPanel cung cấp ngoại lệ con trỏ null khi thêm bất kỳ thành phần

Tôi đã tạo một JPanel trống "questionPanel" với ItelliJ GridLayoutManager. Khi tôi cố thêm bất kỳ thứ gì vào bảng điều khiển đó, tôi nhận được ngoại lệ con trỏ null mặc dù bảng điều khiển chắc chắn không phải là rỗng. Tôi cũng đã thử thêm một JTextField để bố trí (ra khỏi tò mò) và điều đó đã không giúp đỡ một trong hai. JTextField xuất hiện, nhưng tôi vẫn không thể thêm bất cứ thứ gì từ bên trong mã.

Khi tôi thay đổi trình quản lý bố cục thành bất kỳ thứ gì khác (GridBagLayout, FormLayout, BorderLayout, v.v.), tôi không còn gặp lỗi nữa, nhưng không có gì hiển thị.

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 
} 

Không ai có một ý tưởng về những gì đang xảy ra đằng sau hậu trường hay cách nào cho tôi để có được các thành phần lên bảng? Cảm ơn.

mẫu Stack Trace (dấu vết này không được thực hiện bởi các mã tương tự như trên, nhưng nó là lỗi tương tự):

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

Để được trợ giúp tốt hơn sớm hơn, gửi một [SSCCE] (http://sscce.org/). –

+0

có thể bạn đã chọn tạo tùy chỉnh? –

Trả lời

11

Đối với bất cứ ai đang sử dụng tạo GUI IntelliJ và nhận được lỗi tương tự, tôi đã khắc phục sự cố bằng cách đặt trình quản lý bố cục của bảng theo cách thủ công trong mã thay vì chọn các trình quản lý bố cục khác nhau trong trình tạo GUI.

Ví dụ:

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

Các Intellij IDEA GUI tác giả cũng cho phép bạn chèn hình ảnh như nhãn. Để tạo ra một nhãn bất cứ nơi nào bạn muốn, và trong cofigurations bạn sẽ tìm thấy và khe cắm biểu tượng, nơi bạn sẽ chọn đường dẫn đến hình ảnh của bạn. Và đó là nó !!

1

Tôi gặp lỗi tương tự như bạn đã làm. Tôi có một JPanel với Layout Manager được thiết lập để GridLayoutManager Intellij. Khi tôi cố gắng thêm bất kỳ thành phần nào vào bảng điều khiển này, tôi đã nhận được ngoại lệ.

Tôi sau đó đi vào trình soạn thảo GUI và thay đổi thành BorderLayout và mọi thứ hoạt động tốt. Tôi không chắc tại sao nó không hoạt động cho bạn.

1

Tôi đã đệ trình vấn đề này như là một lỗi trên JetBrains website và nhận được câu trả lời sau đây:

Đối với sửa chữa NPE, hãy thêm một thành phần con để một JPanel với GridLayoutManager với GridConstraints như thế này:

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

hoặc sử dụng bố trí khác.

Sử dụng GridConstraints đã giải quyết được sự cố cho tôi cũng giống như sử dụng Trình quản lý bố cục khác.

tôi rút ngắn & sửa câu trả lời cho khả năng đọc