Ich habe ein JPanel welches eine vertikale Linie in Höhe der X-Koordinate des Mauszeigers und eine horizontale Linie in Höhe der Y-Koordinate des Mauszeigers zeichnet. Immer wenn die Maus bewegt wird, soll repaint() aufgerufen und die Linien an die entsprechende neue Stelle gezeichnet werden.
Zur Veranschaulichung habe ich ein kleinen Screenshot angefügt.
Zum Code:
Meine Klasse erbt von JPanel und bekommt einen MouseAdapter per
zugefügt. Dieser Adapter überschreibt
und führt in dieser Methode jedesmal ein
aus.
ruft
auf und zeichnet mit diesen Informationen die beiden Linien.
Leider wird mir nur eine Fehlermeldung ausgegeben, die sich auf folgende Zeilen bezieht.
Hier die Exception:
Zur Veranschaulichung habe ich ein kleinen Screenshot angefügt.
Zum Code:
Meine Klasse erbt von JPanel und bekommt einen MouseAdapter per
Code:
addMouseListener(...)
Code:
public void mouseMoved(MouseEvent event)
Code:
repaint()
Code:
paintComponents
Code:
getMousePosition()
Leider wird mir nur eine Fehlermeldung ausgegeben, die sich auf folgende Zeilen bezieht.
Java:
Point mousePos = getMousePosition();
g.drawLine(0,
mousePos.y, // Hier wird NPE geworfen
this.getWidth(),
mousePos.y);
Hier die Exception:
Code:
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at de.lexi.std.view.ShootingGround.paintComponent(ShootingGround.java:41)
at javax.swing.JComponent.paint(JComponent.java:1029)
at javax.swing.JComponent.paintChildren(JComponent.java:866)
at javax.swing.JComponent.paint(JComponent.java:1038)
at javax.swing.JComponent.paintChildren(JComponent.java:866)
at javax.swing.JComponent.paint(JComponent.java:1038)
at javax.swing.JLayeredPane.paint(JLayeredPane.java:581)
at javax.swing.JComponent.paintChildren(JComponent.java:866)
at javax.swing.JComponent.paintToOffscreen(JComponent.java:5145)
at javax.swing.BufferStrategyPaintManager.paint(BufferStrategyPaintManager.java:302)
at javax.swing.RepaintManager.paint(RepaintManager.java:1145)
at javax.swing.JComponent.paint(JComponent.java:1015)
at java.awt.GraphicsCallback$PaintCallback.run(GraphicsCallback.java:39)
at sun.awt.SunGraphicsCallback.runOneComponent(SunGraphicsCallback.java:78)
at sun.awt.SunGraphicsCallback.runComponents(SunGraphicsCallback.java:115)
at java.awt.Container.paint(Container.java:1844)
at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:751)
at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:696)
at javax.swing.RepaintManager.prePaintDirtyRegions(RepaintManager.java:676)
at javax.swing.RepaintManager.access$700(RepaintManager.java:57)
at javax.swing.RepaintManager$ProcessingRunnable.run(RepaintManager.java:1550)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:226)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:602)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:275)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:200)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:190)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:185)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:177)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:138)