Sie sind nicht angemeldet.

  • Anmelden

Lieber Besucher, herzlich willkommen bei: Nitrado.net Prepaid Gameserver Community-Support. Falls dies Ihr erster Besuch auf dieser Seite ist, lesen Sie sich bitte die Hilfe durch. Dort wird Ihnen die Bedienung dieser Seite näher erläutert. Darüber hinaus sollten Sie sich registrieren, um alle Funktionen dieser Seite nutzen zu können. Benutzen Sie das Registrierungsformular, um sich zu registrieren oder informieren Sie sich über den Registrierungsvorgang. Falls Sie sich bereits zu einem früheren Zeitpunkt registriert haben, können Sie sich hier anmelden.

TekkitTeam

User / Kunde

  • »TekkitTeam« ist männlich
  • »TekkitTeam« ist der Autor dieses Themas

Beiträge: 1 393

Wohnort: /home

Danksagungen: 2

  • Nachricht senden

1

Mittwoch, 30. April 2014, 19:21

NullPointer O.o

Hallo Community

Ich bin gerade am verzweifeln ;(

Ich versuche einen BufferedImage und eine Graphic an die 2. Klasse zu übergeben.

Dabei funktioniert es so: (Habe ein Teil unwichtiges weggeschnitten)

Java-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
 BufferedImage image;
 Graphics buffer;
public Main() {
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setBounds(100, 100, 450, 300);
		contentPane = new JPanel();
		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
		contentPane.setLayout(new BorderLayout(0, 0));
		setContentPane(contentPane);   
		 
		 image = new BufferedImage(this.getWidth(), this.getHeight(), BufferedImage.TYPE_INT_ARGB);
		 buffer = image.getGraphics();
	}
	
	
	
     public void paint(Graphics g)
     {
    	 Ball b = new Ball(image, buffer);
    	 b.zeigeDich(40, 40, 20, Color.red, g);
     }


So funktioniert es nicht... Aber wieso? Möchte es gerne so machen, da die paint Methode in zusammenhang mit repaint(); eine Dauerschleife ist und ich nicht tausende Objekte von Ball erzeugen will.

Java-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
	public Main() {
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setBounds(100, 100, 450, 300);
		contentPane = new JPanel();
		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
		contentPane.setLayout(new BorderLayout(0, 0));
		setContentPane(contentPane);   
		 
		 image = new BufferedImage(this.getWidth(), this.getHeight(), BufferedImage.TYPE_INT_ARGB);
		 buffer = image.getGraphics();
	}
	
	
		Ball b = new Ball(image, buffer);
     public void paint(Graphics g)
     {
    	 
    	 b.zeigeDich(40, 40, 20, Color.red, g);
     }


Ball.class

Java-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
public class Ball {
	
    
	BufferedImage image;
	Graphics buffer;
	public Ball(BufferedImage image, Graphics buffer) {
		this.image = image;
		this.buffer = buffer;
	}

	public int runde(double x){
		return (int) Math.round(x);
	}
	
	public void zeigeDich(double x, double y, int radius, Color c, Graphics g){
		buffer.setColor(c);
		buffer.fillOval(runde(x), runde(y), radius*2,radius*2);
		g.drawImage(image, 0, 0, null);
		
	}
	

	
	
}

Fehlermeldung

Spoiler Spoiler


Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
	at main.Ball.zeigeDich(Ball.java:21)
	at main.Main.paint(Main.java:56)
	at javax.swing.RepaintManager$3.run(Unknown Source)
	at javax.swing.RepaintManager$3.run(Unknown Source)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
	at javax.swing.RepaintManager.paintDirtyRegions(Unknown Source)
	at javax.swing.RepaintManager.paintDirtyRegions(Unknown Source)
	at javax.swing.RepaintManager.prePaintDirtyRegions(Unknown Source)
	at javax.swing.RepaintManager.access$1100(Unknown Source)
	at javax.swing.RepaintManager$ProcessingRunnable.run(Unknown Source)
	at java.awt.event.InvocationEvent.dispatch(Unknown Source)
	at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
	at java.awt.EventQueue.access$200(Unknown Source)
	at java.awt.EventQueue$3.run(Unknown Source)
	at java.awt.EventQueue$3.run(Unknown Source)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
	at java.awt.EventQueue.dispatchEvent(Unknown Source)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.run(Unknown Source)


BtoBastian

Moderator

  • »BtoBastian« ist männlich

Beiträge: 3 614

Beruf: Softwareentwickler

  • Nachricht senden

2

Mittwoch, 30. April 2014, 19:24

Was ist den Zeile 21 von Ball?
In der zeigeDich()-Methode?
Standard Standart eines Flamingos ist einbeinig.

TekkitTeam

User / Kunde

  • »TekkitTeam« ist männlich
  • »TekkitTeam« ist der Autor dieses Themas

Beiträge: 1 393

Wohnort: /home

Danksagungen: 2

  • Nachricht senden

3

Mittwoch, 30. April 2014, 19:26

Java-Quelltext

1
buffer.setColor(c);


buffer bzw. image sind null bzw. werdem gar nicht richtig übergeben: Wenn ich es mit System.out.println() ausgebe kommt auch null. Deswegen kann es an der ball.class eig nicht liegen :)

BtoBastian

Moderator

  • »BtoBastian« ist männlich

Beiträge: 3 614

Beruf: Softwareentwickler

  • Nachricht senden

4

Mittwoch, 30. April 2014, 19:29

Initialisier das Ball-Attribut b mal erst im Konstruktor und nicht außerhalb eines Methoden-Rumpfs.
Standard Standart eines Flamingos ist einbeinig.

TekkitTeam

User / Kunde

  • »TekkitTeam« ist männlich
  • »TekkitTeam« ist der Autor dieses Themas

Beiträge: 1 393

Wohnort: /home

Danksagungen: 2

  • Nachricht senden

5

Mittwoch, 30. April 2014, 19:30

@BtoBastian

Aber dann kann ich ja nicht auf b zugreifen, da es in einer anderen Methode ist :)

Java-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
public Main() {
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setBounds(100, 100, 450, 300);
		contentPane = new JPanel();
		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
		contentPane.setLayout(new BorderLayout(0, 0));
		setContentPane(contentPane);   
		
		image = new BufferedImage(this.getWidth(), this.getHeight(), BufferedImage.TYPE_INT_ARGB);
		buffer = image.getGraphics();

		Ball b = new Ball(image, buffer);
	}


Edit:// klappt jetzt :D War nur zu doof :) Muss b ja nur initialisieren und nicht erzeugen :D

BtoBastian

Moderator

  • »BtoBastian« ist männlich

Beiträge: 3 614

Beruf: Softwareentwickler

  • Nachricht senden

6

Mittwoch, 30. April 2014, 19:34

Definieren kannst du es außerhalb, aber initialisieren nicht.

Java-Quelltext

1
2
3
4
5
6
7
Ball b;
public Main() {
  // blabla
  image = new // usw.
  buffer = image.getGraphics();
  b = new Ball(image, buffer);
}

image und buffer unbedingt zuvor initialisieren!
Standard Standart eines Flamingos ist einbeinig.