2012-12-06 22 views
0

我有以下的代碼Nullpointexception試圖劃清界限

首先兩段代碼:

package guicollection; 

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

public class RectanglePattern extends GUIcollection implements ActionListener { 

    JPanel panelForBackGround; 
    JButton actionButton; 

    void drawRectangle() { 

     RectanglePattern outSideCover = new RectanglePattern(); 
     outSideCover.setSize(500, 500); 
     outSideCover.createGUI(); 
     outSideCover.setVisible(true); 

    } 

    private void createGUI() { 

     setDefaultCloseOperation(EXIT_ON_CLOSE); 
     Container window = getContentPane(); 
     window.setLayout(new FlowLayout()); 

     panelForBackGround = new JPanel(); 
     panelForBackGround.setPreferredSize(new Dimension(400, 300)); 

     panelForBackGround.setBackground(Color.blue); 

     window.add(panelForBackGround); 

     actionButton = new JButton("Press me"); 
     window.add(actionButton); 
     actionButton.addActionListener(this); 


    } 

    public void actionPerformed(ActionEvent event) { 
     Graphics paper = panelForBackGround.getGraphics(); 

     paper.drawLine(0, 0, 9, 10); 
     paper.drawRect(8, 8, 12, 9); 
     paper.drawRect(6, 6, 12, 6); 

    } 
} 

和第二碼:

package guicollection; 

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

public class RectanglePattern extends GUIcollection{ 

    JPanel panelForBackGround; 
    JButton actionButton; 

    void drawRectangle() { 

     RectanglePattern outSideCover = new RectanglePattern(); 
     outSideCover.setSize(500, 500); 
     outSideCover.createGUI(); 
     outSideCover.setVisible(true); 

    } 

    private void createGUI() {   

     setDefaultCloseOperation(EXIT_ON_CLOSE); 
     Container window = getContentPane(); 
     window.setLayout(new FlowLayout()); 

     panelForBackGround = new JPanel(); 
     panelForBackGround.setPreferredSize(new Dimension(400, 300)); 

     panelForBackGround.setBackground(Color.blue); 

     window.add(panelForBackGround); 

     actionButton = new JButton("Press me"); 
     window.add(actionButton); 
     actionButton.addActionListener(this); 





     Graphics paper = panelForBackGround.getGraphics(); 

     paper.drawLine(0, 0, 9, 10); 
     paper.drawRect(8, 8, 12, 9); 
     paper.drawRect(6, 6, 12, 6); 


} 

} 

第二個代碼顯示了以下錯誤而編譯。是不是必須在panelForBackGround上畫一條線和兩個矩形?這個錯誤的原因是什麼?

錯誤:

 
Exception in thread "main" java.lang.NullPointerException 
    at guicollection.RectanglePattern.drawRectangle(RectanglePattern.java:20) 
    at guicollection.GUIcollection.main(GUIcollection.java:24) 
+0

你調試了你的代碼,並從哪裏發現nullPointerException被拋出? – Smit

+0

我想不通。它只給出錯誤信息。我是一個新的bie。 – user1837224

+0

那麼在這種情況下,請點擊此鏈接。這對Eclipse調試有非常好的教程。 www.comscigate.com/debug/learn_Debug.htm – Smit

回答

0

一個空指針驗收規範這裏通常有不正確地創建圖形環境做。嘗試調用此方法:

window.setVisible(true); 

OR 這可能是因爲你想得出這樣的機器還沒有來得及尚未完全建立一個窗口。我有這個問題。試着告訴程序等待窗口創建圖形變量之前這樣做的權利追趕:

try{ 
Thread.sleep(300); 
catch(Exception e){ 
System.out.println(e.printStackTrace()); 
} 

我知道捕只是「例外」,而不是一個特定的異常是不是最好的東西,但它是很容易出路xD大聲笑。告訴我,如果這些工作。如果沒有,我會回來幫助更多。