2010-08-13 69 views
0

下面的代碼不會編譯失敗,但是在運行時它說在行號爲20和41的Line上有java.lang.NullPointerException。另外我有點好奇,想知道什麼是空指針異常,運行時會發生什麼?程序中的空指針異常

import java.awt.*; 
import java.awt.event.*; 
import javax.swing.*; 


public class Tool 
    { 
    private JToolBar toolbar1; 
    private JToolBar toolbar2; 
    private JPanel panel; 
    public Tool() 
     { 
     JFrame frame= new JFrame(); 
     panel = new JPanel(); 
     panel.setLayout(new BoxLayout(panel,BoxLayout.Y_AXIS)); 
     JButton one = new JButton("one"); 
     JButton two = new JButton("two"); 
     JButton three = new JButton("three"); 
     JButton four = new JButton("four"); 
      toolbar1 = new JToolBar(); 
      toolbar2 = new JToolBar(); 
     toolbar1.add(one); 
     toolbar1.add(two); 
     toolbar2.add(three); 
     toolbar2.add(four); 
     toolbar1.setAlignmentX(0); 
     toolbar2.setAlignmentX(0); 
     panel.add(toolbar1); 
     panel.add(toolbar2); 
     frame.add(panel,BorderLayout.NORTH); 

     frame.setDefaultCloseOperation(frame.EXIT_ON_CLOSE); 
     frame.setSize(400,300); 
     frame.setTitle("ZOOP"); 
     frame.setVisible(true); 
     } 




     public static void main (String args[]) 
     { 
     Tool zoop = new Tool(); 
     } 


    } 
+0

http://download.oracle.com/javase/6/docs/api/java/lang/NullPointerException.html +數百這裏的問題。 – Bozho 2010-08-13 16:17:12

+0

好的,我更新了程序,但爲什麼我的工具欄可停靠,如何禁用該功能也請告訴我一些JToolBar的常用構造函數 – subanki 2010-08-13 16:23:31

回答

5

您通過以下方法null ....

 panel.add(toolbar1); 
    panel.add(toolbar2); 

這是因爲以下尚未初始化。

private JToolBar toolbar1; 
private JToolBar toolbar2; 

定義的的NullPointerException

當應用程序試圖使用 在無效的情況下,其目的在於需要 拋出。其中包括:

  • 調用空對象的實例方法。
  • 訪問或修改空對象的字段。
  • 將null的長度當作數組。
  • 訪問或修改null的插槽,就好像它是一個數組。
  • 將null拋出,就像它是Throwable值一樣。

初始化它

JToolBar toolbar1 = new JToolBar(SwingConstants.HORIZONTAL); 
JToolBar toolbar2 = new JToolBar(SwingConstants.VERTICAL); 
1

初始化工具欄

private JToolBar toolbar1; 
private JToolBar toolbar2; 

您嘗試已創建它們之前的按鈕添加到您的工具欄。最簡單的辦法:

private JToolBar toolbar1 = new JToolBar(); 
private JToolBar toolbar2 = new JToolBar(); 
2

你有沒有真正分配toolbar1toolbar2。你需要做的是這樣的:

toolbar1 = new JToolBar(); 
toolbar2 = new JToolBar ("other toolbar"); 

就像你做的事:

JButton one = new JButton("one"); 

你得到異常的原因是因爲你想取消對它的引用,有什麼也沒有。

請參閱here JToolBar文檔。

+0

wow thnx爲鏈接 – subanki 2010-08-13 16:26:24

1

你應該永遠不會趕上NullPointerException異常,你應該總是寫你的程序,使得它不會發生。 對「精英紳士」提到的條件適用必要的空檢查:)