2016-04-07 12 views
0

İplik hakkında küçük bir örnek çalışıyorum ve bunun için örnek program takip ediliyor, derleme kuyruğu, ancak çembere basmaya başlamak için düğmeye bastığımda Netbeans bana bir istisna atıyor, birisi bana yardımcı olabilir.AWT-EventQueue-0 exepction

durum iplik feedingschedule.FillDemo.actionPerformed (FillDemo.java:56) de feedingschedule.FillDemo.fill (FillDemo.java:63) de "AWT-EventQueue-0" java.lang.NullPointerException de javax.swing.DefaultButtonModel.fireActionPerformed de javax.swing.AbstractButton $ Handler.actionPerformed (AbstractButton.java:2348) de javax.swing.AbstractButton.fireActionPerformed (AbstractButton.java:2022) (DefaultButtonModel.java:402) javax.swing.DefaultButtonModel.setPressed (DefaultButtonModel.java:259) javax.swing.plaf.basic.BasicButtonListener.mouseReleased (BasicButtonListener.java:252) javax.swing.JComponent.processMouseEvent de java.awt.Component.processMouseEvent (Component.java:6535) (JComponent.java de de: 3324) adresindeki java.awt.Component.processEvent (Component.java:6300) adresinden java.awt.Container.processEvent (Container.java:2236) adresindeki java.awt.Component.dispatchEventImpl (Component.java:4891) java.awt.LightweightDispatcher.retargetMouseEvent (Container.java:4888) en java.awt.Component.dispatchEvent (Component.java:4713) en java.awt.Container.dispatchEventImpl (Container.java:2294) en java.awt.LightweightDispatcher.processMouseEvent (Container .java: 4525) java.awt.LightweightDispatcher.dispatchEvent (Container.java:4466) at java.awt.Container.dispatchEventImpl (Container.java:2280) at java.awt.Window.dispatchEventImpl (Window.java adresinde) : 2750) adresindeki java.awt.Component.dispatchEvent (Component.java:4713) adresinden java.awt.EventQueue.dispatchEventImpl (EventQueue.java:758) adresinden java.awt.EventQueue.access $ 500 (EventQueue.java: 97) adresindeki java.awt.EventQueue $ 3.run (EventQueue.java:709) adresinden java.awt.EventQueue $ 3.run (EventQueue.java:703) adresindeki java.security.AccessController.doPrivileged (Yerel Yöntem) java.security.ProtectionDomain $ JavaSecurityAccessImpl.doIntersectionPrivilege (ProtectionDomain.java:76) at java.security.ProtectionDomain $ JavaSecurityAccessImpl.doIntersectionPrivilege (ProtectionDomain.java:86) adresindeki java.awt.EventQueue $ 4.run (EventQueue.java:731) adresinden java.awt.EventQueue $ 4.run (EventQueue.java:729) de java.awt.EventQueue.dispatchEvent de java.security.ProtectionDomain $ JavaSecurityAccessImpl.doIntersectionPrivilege (ProtectionDomain.java:76) de java.security.AccessController.doPrivileged (Yerli Yöntemi) (EventQueue.java:728) de java.awt.EventDispatchThread.pumpEventsForHie de java.awt.EventDispatchThread.pumpOneEventForFilters java.awt.EventDispatchThread.pumpEventsForFilter (EventDispatchThread.java:116) 'den (EventDispatchThread.java:201) rarchy (EventDispatchThread.java:105) java.awt.EventDispatchThread.pumpEvents (EventDispatchThread.java:101) java.awt.EventDispatchThread.pumpEvents (EventDispatchThread.java:93) java.awt.EventDispatchThread de de de . run (EventDispatchThread.java:82) YAPI BAŞARILI (toplam süresi: 3 saniye)

teşekkürler.Programınız içine

package feedingschedule; 

import java.awt.BorderLayout; 
import java.awt.FlowLayout; 
import java.awt.Graphics; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 
import javax.swing.JButton; 
import javax.swing.JFrame; 
import javax.swing.JPanel; 
/** 
* 
* @author ManagerCompufi 
*/ 
public class FillDemo extends JFrame implements ActionListener { 
    public static final int WIDTH_S = 300; 
    public static final int HEIGHT_S = 200; 
    public static final int FILL_WITH = 300; 
    public static final int FILL_HEIGHT = 100; 
    public static final int CIRCLE_SIZE = 10; 
    public static final int PAUSE = 100; 

    private final JPanel box; 

public static void main(String[] args) { 

    FillDemo gui = new FillDemo(); 
    gui.setVisible(true); 

} 


public FillDemo(){ 
    setSize(WIDTH_S, HEIGHT_S); 
    setTitle("FillDemo"); 
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    setLayout(new BorderLayout()); 
    box = new JPanel(); 

    JPanel buttonPanel = new JPanel(); 
    buttonPanel.setLayout(new FlowLayout()); 
    JButton startButton = new JButton(); 
    startButton.addActionListener(this); 
    buttonPanel.add(startButton); 
    add(buttonPanel, "South"); 
} 


    @Override 
    public void actionPerformed(ActionEvent e) { 
    fill(); 
    } 

    public void fill(){ 
    Graphics g = box.getGraphics(); 
     for (int y = 0; y < FILL_HEIGHT; y = y + CIRCLE_SIZE) 
     for (int x = 0; x < FILL_WITH; x = x + CIRCLE_SIZE){ 
     g.fillOval(x, y, CIRCLE_SIZE, CIRCLE_SIZE); 
     doNothing(PAUSE); 

     } 
    } 

    public void doNothing(int milliseconds){ 
    try { 
     Thread.sleep(milliseconds); 
    } 
    catch (InterruptedException e) { 
     System.out.println("Unexpected interrup"); 
     System.exit(0); 
    } 

    } 
} 

cevap

0

,

Graphics g = box.getGraphics(); // which returns null 

ve sonra, bunu bazı işlemi gerçekleştirmek için deneyin,

g.fillOval(x, y, CIRCLE_SIZE, CIRCLE_SIZE); // which leads to NullPointerException 

Yani, daha iyi aynı şekilde üzerinde kontrolleri koymak,

Graphics g = box.getGraphics(); 
if(g != null){ 
     for (int y = 0; y < FILL_HEIGHT; y = y + CIRCLE_SIZE) 
      for (int x = 0; x < FILL_WITH; x = x + CIRCLE_SIZE){ 
       ...... 
      } 
    }