Windows Azure Cloud Storage ermöglicht es Ihnen bereits ab 0,10€ pro GB/Monat die Vorteile der Cloud zu nutzen.
Hypercell ein ] Hypercell aus ] Zeige Navigation ] Verstecke Navigation ]
c++.de  
   
Advanced Developers Conference     
Bücher-Shop mit Amazon (Buchkategorien)C++ : Referenzen zu C++ : C++ Builder : Visual C++ : C# : Java : Spieleprogrammierung : Systemprogrammierung Linux : Software-Entwicklung : .NET : Compilertechnik : Algorithmen & Datenstrukturen : Objektorientierung : Entwurfsmuster : UML : eXtreme Programming : Scrum : Projektmanagement : Software-Testing : Datenbanken : Tom DeMarco : Dilbert : User Friendly
C/C++ Forum :: Java ::  Einfaches Programm mit 2dim array -> NullPointerException     Zeige alle Beiträge auf einer Seite Auf Beitrag antworten
Autor Nachricht
java_anfaenger
Unregistrierter




Beitrag java_anfaenger Unregistrierter 10:37:50 10.03.2010   Titel:   Einfaches Programm mit 2dim array -> NullPointerException            Zitieren

Hallo,

folgender code:

Java Code:
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
import java.awt.*;
import java.awt.event.*;

class Fenster extends Frame
{  Panel[][] P = null;
   
   Fenster()
   {  this.setTitle("4 Gewinnt");
      //this.setSize(500, 300);
      this.setBackground(new Color(200, 255, 255));
      this.setLayout(new GridLayout(6, 7));

     
      //Erstellung der Komponenten
      P = new Panel[6][];
      for(int i = 0; i < P.length; i++)
         P[i] = new Panel[7];
     
     //bestimmte Schriftart, Schriftstil, Schriftgröße
      Font f = new Font("Arial", 2, 36);
      for(int i = 0; i < P.length; i++)
         for(int j = 0; j < P[i].length; j++)
            (P[i][j]).setFont(f);
     
      //Hinzufügen der erzeugten Komponenten zum Fenster
      for(int i = 0; i < P.length; i++)
          for(int j = 0; j < P[i].length; j++)
             this.add(P[i][j]);


      //Verknüpfung des "Ohres" mit dem Fenster für das Schliessen-Ereignis
      this.addWindowListener(new WinAppKlasse());

      //Anpassen der Fenstergröße an die Komponenten
      this.pack();

      //Fenster sichtbar machen
      this.setVisible(true); //alte Fassung: this.show();
   }
   
   //Klasse für das Schliessen des Fensters
   class WinAppKlasse extends WindowAdapter
   {  public void windowClosing(WindowEvent e)
      {  System.exit(0);
      }

   }
   
   public static void main(String[] args)
   {  new Fenster();

   }

}
Java Code:
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
import java.awt.*;
import java.awt.event.*;

class Fenster extends Frame
{ Panel[][] P = null;

Fenster()
{ this.setTitle("4 Gewinnt");
//this.setSize(500, 300);
this.setBackground(new Color(200, 255, 255));
this.setLayout(new GridLayout(6, 7));


//Erstellung der Komponenten
P = new Panel[6][];
for(int i = 0; i < P.length; i++)
P[i] = new Panel[7];

//bestimmte Schriftart, Schriftstil, Schriftgröße
Font f = new Font("Arial", 2, 36);
for(int i = 0; i < P.length; i++)
for(int j = 0; j < P[i].length; j++)
(P[i][j]).setFont(f);

//Hinzufügen der erzeugten Komponenten zum Fenster
for(int i = 0; i < P.length; i++)
for(int j = 0; j < P[i].length; j++)
this.add(P[i][j]);


//Verknüpfung des "Ohres" mit dem Fenster für das Schliessen-Ereignis
this.addWindowListener(new WinAppKlasse());

//Anpassen der Fenstergröße an die Komponenten
this.pack();

//Fenster sichtbar machen
this.setVisible(true); //alte Fassung: this.show();
}

//Klasse für das Schliessen des Fensters
class WinAppKlasse extends WindowAdapter
{ public void windowClosing(WindowEvent e)
{ System.exit(0);
}

}

public static void main(String[] args)
{ new Fenster();

}

}
Java Code:
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
import java.awt.*;
import java.awt.event.*;

class Fenster extends Frame
{  Panel[][] P = null;
   
   Fenster()
   {  this.setTitle("4 Gewinnt");
      //this.setSize(500, 300);
      this.setBackground(new Color(200, 255, 255));
      this.setLayout(new GridLayout(6, 7));

     
      //Erstellung der Komponenten
      P = new Panel[6][];
      for(int i = 0; i < P.length; i++)
         P[i] = new Panel[7];
     
     //bestimmte Schriftart, Schriftstil, Schriftgröße
      Font f = new Font("Arial", 2, 36);
      for(int i = 0; i < P.length; i++)
         for(int j = 0; j < P[i].length; j++)
            (P[i][j]).setFont(f);
     
      //Hinzufügen der erzeugten Komponenten zum Fenster
      for(int i = 0; i < P.length; i++)
          for(int j = 0; j < P[i].length; j++)
             this.add(P[i][j]);


      //Verknüpfung des "Ohres" mit dem Fenster für das Schliessen-Ereignis
      this.addWindowListener(new WinAppKlasse());

      //Anpassen der Fenstergröße an die Komponenten
      this.pack();

      //Fenster sichtbar machen
      this.setVisible(true); //alte Fassung: this.show();
   }
   
   //Klasse für das Schliessen des Fensters
   class WinAppKlasse extends WindowAdapter
   {  public void windowClosing(WindowEvent e)
      {  System.exit(0);
      }

   }
   
   public static void main(String[] args)
   {  new Fenster();

   }

}


Jetzt sagt mir der Compiler das es einen NullPointerException gibt.
Aber wo sollte die sein?
Bevor ich darauf zugreife habe ich dem array doch objekte zugewiesen!?

Könnte mir da vielleicht einer einen tipp geben? Wäre super.

Gruß
java_anfaenger
Unregistrierter




Beitrag java_anfaenger Unregistrierter 11:06:57 10.03.2010   Titel:              Zitieren

Ok,

das fehlte dann wohl doch...
Java Code:
for(int i = 0; i < P.length; i++)
  for(int j = 0; j < P[i].length; j++)
    P[i][j] = new Panel();
Java Code:
for(int i = 0; i < P.length; i++)
for(int j = 0; j < P[i].length; j++)
P[i][j] = new Panel();
Java Code:
for(int i = 0; i < P.length; i++)
  for(int j = 0; j < P[i].length; j++)
    P[i][j] = new Panel();
ebenfalls Anfänger
Unregistrierter




Beitrag ebenfalls Anfänger Unregistrierter 18:11:18 10.03.2010   Titel:              Zitieren

Hi.

Vorweg, ich glaube wenn man Fehler postet, sollte man auch die Fehlermeldung mit Anhängen. Da steht dann meistens sowas wie "caused by" und "at" dabei. Dann sieht man auch besser wo genau der Fehler passiert.

So wie es aussieht hast du dein Problem bereits erkannt. Du kannst natürlich die Methode "setFont" eines Panels nur aufrufen, wenn du das Panel hast. Leider sind die Panels bei dir erst nach dem Aufruf der "setFont" Methode erzeugt worden ;)

Ein weiteres Problem oder zuminderst ist es mir nicht ganz klar, ist die Sache mit den 6*7 Panels die du in das Frame reinschmeißt. Ich glaube die müssten in das GridLayout und nicht in das Frame. Alternativ brauchst du irgendwie eine Möglichkeit die Panels zu unterscheiden.

Java Code:
1
2
3
4
5
6
7
8
1
2
3
4
5
6
7
8
....
for (int i=0; i<6*7;i++) {
  Font f = new Font(...);
  Panel p = new Panle();
  p.setFont(f);
  this.add(p);
}
....
Java Code:
1
2
3
4
5
6
7
8
....
for (int i=0; i<6*7;i++) {
Font f = new Font(...);
Panel p = new Panle();
p.setFont(f);
this.add(p);
}
....
Java Code:
1
2
3
4
5
6
7
8
....
for (int i=0; i<6*7;i++) {
  Font f = new Font(...);
  Panel p = new Panle();
  p.setFont(f);
  this.add(p);
}
....


Das sollte doch in etwa das gleiche sein wie du momentan machst. Das du die Panels vorher in einer Matrix speicherst ist schön, letztendlich gehen dir diese "Koordinaten" doch aber verloren?

Bin aber selber noch Anfänger und kenne mich mit dem GUI Zeug nicht wirklich aus :rolleyes: also eventuell liege ich auch völlig falsch?
java_anfaenger
Unregistrierter




Beitrag java_anfaenger Unregistrierter 08:12:07 11.03.2010   Titel:              Zitieren

Hallo,
ebenfalls Anfänger schrieb:

Vorweg, ich glaube wenn man Fehler postet, sollte man auch die Fehlermeldung mit Anhängen. Da steht dann meistens sowas wie "caused by" und "at" dabei. Dann sieht man auch besser wo genau der Fehler passiert.

Richtig, das sollte man.

ebenfalls Anfänger schrieb:

Leider sind die Panels bei dir erst nach dem Aufruf der "setFont" Methode erzeugt worden ;)


Die Panels wurden nicht erzeugt, erst nach dem einfügen von dem Codeausschnitt aus meinem 2.post wurden diese erzeugt.
mit dem this.add(P); werden die erzeugten Komponenten hinzugefügt.
ebenfalls Anfänger schrieb:

Ein weiteres Problem oder zuminderst ist es mir nicht ganz klar, ist die Sache mit den 6*7 Panels die du in das Frame reinschmeißt. Ich glaube die müssten in das GridLayout und nicht in das Frame. Alternativ brauchst du irgendwie eine Möglichkeit die Panels zu unterscheiden.

Java Code:
1
2
3
4
5
6
7
8
1
2
3
4
5
6
7
8
....
for (int i=0; i<6*7;i++) {
  Font f = new Font(...);
  Panel p = new Panle();
  p.setFont(f);
  this.add(p);
}
....
Java Code:
1
2
3
4
5
6
7
8
....
for (int i=0; i<6*7;i++) {
Font f = new Font(...);
Panel p = new Panle();
p.setFont(f);
this.add(p);
}
....
Java Code:
1
2
3
4
5
6
7
8
....
for (int i=0; i<6*7;i++) {
  Font f = new Font(...);
  Panel p = new Panle();
  p.setFont(f);
  this.add(p);
}
....


Das sollte doch in etwa das gleiche sein wie du momentan machst. Das du die Panels vorher in einer Matrix speicherst ist schön, letztendlich gehen dir diese "Koordinaten" doch aber verloren?


Dem Frame weiße ich mit this das GridLayout zu, und dann schmeiße ich die Komponenten dort hinein. Es funktioniert. :)
Mit deinem CodeBeispiel hast du schon recht, nur kann ich diese doch dann nicht mehr einzeln ansprechen? Warum sollten mir die Koordinaten verloren gehen? Ich habe doch ein 2-dim array und kann dann auf die koords somit zugreifen... Oder was meinen die anderen?

Gruß
C/C++ Forum :: Java ::  Einfaches Programm mit 2dim array -> NullPointerException   Auf Beitrag antworten

Zeige alle Beiträge auf einer Seite




Nächstes Thema anzeigen
Vorheriges Thema anzeigen
Sie können Beiträge in dieses Forum schreiben.
Sie können auf Beiträge in diesem Forum antworten.
Sie können Ihre Beiträge in diesem Forum nicht bearbeiten.
Sie können Ihre Beiträge in diesem Forum nicht löschen.
Sie können an Umfragen in diesem Forum nicht mitmachen.

Powered by phpBB © 2001, 2002 phpBB Group :: FI Theme

c++.de ist Teilnehmer des Partnerprogramms von Amazon Europe S.à.r.l. und Partner des Werbeprogramms, das zur Bereitstellung eines Mediums für Websites konzipiert wurde, mittels dessen durch die Platzierung von Werbeanzeigen und Links zu amazon.de Werbekostenerstattung verdient werden kann.

Die Vervielfältigung der auf den Seiten www.c-plusplus.de, www.c-plusplus.info, www.c-sar.de, www.c-plusplus.net und www.baeckmann.de enthaltenen Informationen ohne eine schriftliche Genehmigung des Seitenbetreibers ist untersagt (vgl. §4 Urheberrechtsgesetz). Die Nutzung und Änderung der vorgestellten Strukturen und Verfahren in privaten und kommerziellen Softwareanwendungen ist ausdrücklich erlaubt, soweit keine Rechte Dritter verletzt werden. Der Seitenbetreiber übernimmt keine Gewähr für die Funktion einzelner Beiträge oder Programmfragmente, insbesondere übernimmt er keine Haftung für eventuelle aus dem Gebrauch entstehenden Folgeschäden.