JPanel repaint()

lonol15

Mitglied
Die repaint Methode macht was sie will. Mal funktioniert alles,mal kommt ein Fehlermeldung und mal ist das Fenster grau(sollte eigentlich weis sein und es sollten schwarze Strich drauf sein).

Bitte helft mir ich werde Wahnsinnig******!

Ich habe eine Klasse die JPanel erweitert(extends) und dann noch JFrame und so.
Dann hab ich geschrieben:

frame.getContentPane().add(panel);

In der Klasse panel steht in einer Methode repaint(). Könnte es da Probleme geben?
 
Um dir zu helfen wäre die Fehlermeldung und etwas Code hilfreich! besonders alle Methoden, die mit paint() und paintComponent() zu tun haben.
 
Fehlermeldung:

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at ColorEngine.paintComponent(ColorEngine.java:41)
at javax.swing.JComponent.paint(JComponent.java:1029)
at javax.swing.JComponent.paintChildren(JComponent.java:862)
at javax.swing.JComponent.paint(JComponent.java:1038)
at javax.swing.JComponent.paintChildren(JComponent.java:862)
at javax.swing.JComponent.paint(JComponent.java:1038)
at javax.swing.JLayeredPane.paint(JLayeredPane.java:567)
at javax.swing.JComponent.paintChildren(JComponent.java:862)
at javax.swing.JComponent.paintToOffscreen(JComponent.java:5131)
at javax.swing.BufferStrategyPaintManager.paint(BufferStrategyPaintManager.java:278)
at javax.swing.RepaintManager.paint(RepaintManager.java:1224)
at javax.swing.JComponent.paint(JComponent.java:1015)
at java.awt.GraphicsCallback$PaintCallback.run(GraphicsCallback.java:21)
at sun.awt.SunGraphicsCallback.runOneComponent(SunGraphicsCallback.java:60)
at sun.awt.SunGraphicsCallback.runComponents(SunGraphicsCallback.java:97)
at java.awt.Container.paint(Container.java:1780)
at java.awt.Window.paint(Window.java:3375)
at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:796)
at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:713)
at javax.swing.RepaintManager.seqPaintDirtyRegions(RepaintManager.java:693)
at javax.swing.SystemEventQueueUtilities$ComponentWorkRequest.run(SystemEventQueueUtilities.java:125)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:642)
at java.awt.EventQueue.access$000(EventQueue.java:85)
at java.awt.EventQueue$1.run(EventQueue.java:603)
at java.awt.EventQueue$1.run(EventQueue.java:601)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:612)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)

Code:

Java:
public void end(){repaint();}
public void paintComponent(Graphics g)
   {                    
               g.fillRect(x1,x2,x3,x4);                    
    }
natürlich vereinfacht aber der Rest ist unwichtig

Theoretisch wird paintComponent() einmal aufgerufen.
Aber praktisch ist das wie schon oben beschrieben immer unterschiedlich.
 
Zuletzt bearbeitet:
Ist das alles von deiner paintComponent()-Methode? Welche Code-Zeile ist denn die Zeile 41?
So wie es aussieht, versuchst du in der paintComponent()-Methode auf ein Objekt zuzugreifen, dessen Referenz ins Leere läuft. Graphics g, das Argument dieser Methode, kann eigentlich nicht null werden, also muss da noch anderer Code herumliegen.
 
Zurück