GridBagConstraints NullPointerExeption

LukLuk

Aktives Mitglied
Heho Zusammen,
Ich hab für ein GridBagLayout ein GridBagConstraints Array erstellt da ich für jedes Element das ich anordnen möchte ein extra GridBagConstraints brauche (Außer ich habe das falsch verstanden). Ich hab außerdem noch eine Funktion erstellt die die Werte zuweißt.
Mein Problem ist aber nun das es zu einer NullPointerExeption kommt wenn ich die Funktion aufrufe aber es sollten eigendlich alle Elemente vom Array erstellt und initialisiert sein und ich hab keine Ahnung woher der Fehler kommt.

Die Erstellung des Arrays
Java:
private GridBagConstraints[] layout;

layout=new GridBagConstraints[287];
		for (i=0;i<286 ;i++){
			layout[i]=new GridBagConstraints();
		}

gbcNr=0;
		//gridx=Spalte 
		//gridy=Zeile
		//gridwidht=Breite der Spalte
		//gridheigth=Höhe der Spalte
		for(i=0;i<14;i++){
			for(is=0;is<23;is++){
				GbcEinstellung(is, i, 1, 1, gbcNr,layout);
				gbcNr++;
			}
		}

Noch was zu den Parameter is,i und die zwei einsen sind für gridx,gridy,gridwidth und gridheight und "gbcNr" ist ein int wert und soll die Position dem Array-Element übermitteln das gerade bearbeitet wird(Ich weiß nicht ob man das braucht aber ich habs mal ausprobiert) und mit layout übergebe ich das Array

und nun die Funktion

Java:
public void GbcEinstellung (int gridx,int gridy,int gridwidth,int gridheight,int gbcNr,GridBagConstraints[] gbc){
		
		layout[gbcNr].gridx=gridx;
		layout[gbcNr].gridy=gridy;
		layout[gbcNr].gridwidth=gridwidth;
		layout[gbcNr].gridheight=gridheight;
		
	}
 
T

tröööt

Gast
@TO
nein ... da hast du GridBagConstraints aber mal völlig falsch verstanden ... es reicht EIN GrindBagLayout und EIN GridBagConstraints ... den GBC weist man dann einfach die werte zu (was ich persönlich etwas gegen OOP finde da hier direkt mit public fields gearbeitet wird und nicht mit settern) ...

das sieht dann so aus
Java:
//GBL
//GBC
Component c1=new Component();
gbc.gridx=1;
gbc.gridy=1;
container.add(c1, gbc);
Component c2=new Component();
gbc.gridx=2;
gbc.gridy=2;
container.add(c2, gbc);

ein riesiges array mit nem ziemlich großen datentyp anlegen kracht ganz schön RAM weg ... und das hat man schon bei der entwicklung dieses layouts bedacht
 
T

trääät

Gast
mal von abgesehen initialisierst du das array auch nicht vollständig ... sondern nur von 0 bis 285 ... der index 286 bleibt NULL ... da du nur bis 285 gehst ...

außerdem schreibt man solche loops so

Java:
for(int i=0; i<array.length; i++)

somit wird das array auch KOMPLETT gefüllt ... und nicht wie bei dir das letzte element NULL gelassen ...
 

Ähnliche Java Themen

Neue Themen


Oben