Problem mit Array

Status
Nicht offen für weitere Antworten.

Antoras

Top Contributor
Hallo,

Also, ich habe 20 Textfelder in ein JFrame erstellt. Bei diesen möchte ich nun die eingegebenen Zahlen auslesen. Jetzt hab ich allerdings da Problem, dass ich bei jedem TF nun jedes Mal die Zeile zahl1 = Integer.parseInt(jTextField1.getText() usw. schreiben muss - umständlich, vor allem bei der Weiterverarbeitung der Integerwerte.
Also wollte ich die TF mit einem Array kreieren. Beim Kompilieren bekomm ich dann aber immer folgende Fehlermeldungen:
java.lang.NullPointerException
at java.awt.Container.addImpl(Container.java:1027)
at java.awt.Container.add(Container.java:352)
at AIT_KA2.initGUI(AIT_KA2.java:81)
at AIT_KA2.<init>(AIT_KA2.java:64)
at AIT_KA2$1.run(AIT_KA2.java:55)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:597)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:273)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:183)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:173)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:168)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:160)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:121)
So sieht der Code ohne Array aus:
Code:
public class AIT_KA2 extends javax.swing.JFrame {	
	     private JPanel jPanel1;
        private JTextField jTextField1; //usw. bis 20

        private void initGUI() {
		try {
			setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
			getContentPane().setLayout(null);
			{
				jPanel1 = new JPanel();
				getContentPane().add(jPanel1);
				LayoutManager jPanel1Layout = null;
				jPanel1.setLayout(jPanel1Layout);
				jPanel1.setBounds(0, 6, 395, 132);
				jPanel1.setBorder(BorderFactory.createTitledBorder("Noten der Schüler"));
				jPanel1.setLayout(null);
				{
					jTextField1 = new JTextField();
					jPanel1.add(jTextField1);
					jTextField1.setBounds(10, 20, 71, 22);
				}
				{
					jTextField2 = new JTextField();
					jPanel1.add(jTextField2);
					jTextField2.setBounds(87, 20, 71, 22);
				}
                                //usw. bis zum 20 Textfeld
Und so mit:
Code:
public class AIT_KA2 extends javax.swing.JFrame {	
	     private JTextField jTextField[] = new JTextField[20];	
        private JPanel jPanel1;

        private void initGUI() {
		try {
			setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
			getContentPane().setLayout(null);
			{
				jPanel1 = new JPanel();
				getContentPane().add(jPanel1);
				LayoutManager jPanel1Layout = null;
				jPanel1.setLayout(jPanel1Layout);
				jPanel1.setBounds(0, 6, 395, 132);
				jPanel1.setBorder(BorderFactory.createTitledBorder("Noten der Schüler"));
				jPanel1.setLayout(null);
				{
					jPanel1.add(jTextField[1]);
					jTextField[1].setBounds(10, 20, 71, 22);
				}
				{
					jPanel1.add(jTextField[2]);
					jTextField[2].setBounds(87, 20, 71, 22);
				}
                                //usw. bis zum 20 Textfeld

Ich hab einfach ein Array mit 20 Elementen erstellt und den Code so editiert, dass statt den normalen TF die Array-TF erstellt werden. Eclipse zeigt mir aber keine offensichtliche Fehler an.

Kann mir jemand sagen, warum das nicht geht?

PS: Die ganze funktionierende Klasse, falls was unverständlich ist (Iasst euch nicht von dem KA beeindrucken, die ist schon längst vorbei):
Code:
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;

public class AIT_KA2 extends javax.swing.JFrame {	
	//private JTextField jTextField[] = new JTextField[20];	
	private JPanel jPanel1;
	private JTextField jTextField9;
	private JTextField jTextField8;
	private JTextField jTextField7;
	private JTextField jTextField6;
	private JLabel jLabel8;
	private JLabel jLabel7;
	private JLabel jLabel6;
	private JLabel jLabel5;
	private JLabel jLabel4;
	private JTextField jTextField28;
	private JTextField jTextField27;
	private JTextField jTextField26;
	private JTextField jTextField25;
	private JTextField jTextField24;
	private JTextField jTextField23;
	private JTextField jTextField22;
	private JLabel jLabel3;
	private JLabel jLabel2;
	private JTextField jTextField21;
	private JTextField jTextField10;
	private JTextField jTextField20;
	private JLabel jLabel1;
	private JButton jButton2;
	private JButton jButton1;
	private JTextField jTextField19;
	private JTextField jTextField18;
	private JTextField jTextField17;
	private JTextField jTextField16;
	private JTextField jTextField15;
	private JTextField jTextField14;
	private JTextField jTextField13;
	private JTextField jTextField12;
	private JTextField jTextField11;
	private JTextField jTextField5;
	private JTextField jTextField4;
	private JTextField jTextField3;
	private JTextField jTextField2;
	private JTextField jTextField1;
	private JPanel jPanel2;

	/**
	* Auto-generated main method to display this JFrame
	*/
	public static void main(String[] args) {
		SwingUtilities.invokeLater(new Runnable() {
			public void run() {
				AIT_KA2 inst = new AIT_KA2();
				inst.setLocationRelativeTo(null);
				inst.setVisible(true);
			}
		});
	}
	
	public AIT_KA2() {
		super();
		initGUI();
	}
	
	private void initGUI() {
		try {
			setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
			getContentPane().setLayout(null);
			{
				jPanel1 = new JPanel();
				getContentPane().add(jPanel1);
				LayoutManager jPanel1Layout = null;
				jPanel1.setLayout(jPanel1Layout);
				jPanel1.setBounds(0, 6, 395, 132);
				jPanel1.setBorder(BorderFactory.createTitledBorder("Noten der Schüler"));
				jPanel1.setLayout(null);
				{
					jTextField1 = new JTextField();
					jPanel1.add(jTextField1);
					jTextField1.setBounds(10, 20, 71, 22);
				}
				{
					jTextField2 = new JTextField();
					jPanel1.add(jTextField2);
					jTextField2.setBounds(87, 20, 71, 22);
				}
				{
					jTextField3 = new JTextField();
					jPanel1.add(jTextField3);
					jTextField3.setBounds(164, 20, 71, 22);
				}
				{
					jTextField4 = new JTextField();
					jPanel1.add(jTextField4);
					jTextField4.setBounds(241, 20, 71, 22);
				}
				{
					jTextField5 = new JTextField();
					jPanel1.add(jTextField5);
					jTextField5.setBounds(318, 20, 71, 22);
				}
				{
					jTextField6 = new JTextField();
					jPanel1.add(jTextField6);
					jTextField6.setBounds(10, 48, 71, 22);
				}
				{
					jTextField7 = new JTextField();
					jPanel1.add(jTextField7);
					jTextField7.setBounds(87, 48, 71, 22);
				}
				{
					jTextField8 = new JTextField();
					jPanel1.add(jTextField8);
					jTextField8.setBounds(164, 48, 71, 22);
				}
				{
					jTextField9 = new JTextField();
					jPanel1.add(jTextField9);
					jTextField9.setBounds(241, 48, 71, 22);
				}
				{
					jTextField10 = new JTextField();
					jPanel1.add(jTextField10);
					jTextField10.setBounds(318, 48, 71, 22);
				}
				{
					jTextField11 = new JTextField();
					jPanel1.add(jTextField11);
					jTextField11.setBounds(8, 76, 71, 22);
				}
				{
					jTextField12 = new JTextField();
					jPanel1.add(jTextField12);
					jTextField12.setBounds(87, 76, 71, 22);
				}
				{
					jTextField13 = new JTextField();
					jPanel1.add(jTextField13);
					jTextField13.setBounds(164, 76, 71, 22);
				}
				{
					jTextField14 = new JTextField();
					jPanel1.add(jTextField14);
					jTextField14.setBounds(241, 76, 71, 22);
				}
				{
					jTextField15 = new JTextField();
					jPanel1.add(jTextField15);
					jTextField15.setBounds(318, 76, 71, 22);
				}
				{
					jTextField16 = new JTextField();
					jPanel1.add(jTextField16);
					jTextField16.setBounds(8, 104, 71, 22);
				}
				{
					jTextField17 = new JTextField();
					jPanel1.add(jTextField17);
					jTextField17.setBounds(87, 104, 71, 22);
				}
				{
					jTextField18 = new JTextField();
					jPanel1.add(jTextField18);
					jTextField18.setBounds(164, 104, 71, 22);
				}
				{
					jTextField19 = new JTextField();
					jPanel1.add(jTextField19);
					jTextField19.setBounds(241, 104, 71, 22);
				}
				{
					jTextField20 = new JTextField();
					jPanel1.add(jTextField20);
					jTextField20.setBounds(318, 104, 71, 22);
				}
			}
			{
				jPanel2 = new JPanel();
				getContentPane().add(jPanel2);
				LayoutManager jPanel2Layout = null;
				jPanel2.setLayout(jPanel2Layout);
				jPanel2.setBounds(0, 172, 395, 215);
				jPanel2.setBorder(BorderFactory.createTitledBorder("Häufigkeiten"));
				jPanel2.setLayout(null);
				{
					jLabel2 = new JLabel();
					jPanel2.add(jLabel2);
					jLabel2.setText("Häufigkeiten von 0:");
					jLabel2.setBounds(69, 18, 129, 15);
				}
				{
					jLabel3 = new JLabel();
					jPanel2.add(jLabel3);
					jLabel3.setText("Häufigkeiten von 1:");
					jLabel3.setBounds(69, 46, 129, 15);
				}
				{
					jTextField22 = new JTextField();
					jPanel2.add(jTextField22);
					jTextField22.setBounds(204, 15, 79, 22);
					jTextField22.setEditable(false);
				}
				{
					jTextField23 = new JTextField();
					jPanel2.add(jTextField23);
					jTextField23.setBounds(204, 43, 79, 22);
					jTextField23.setEditable(false);
				}
				{
					jTextField24 = new JTextField();
					jPanel2.add(jTextField24);
					jTextField24.setBounds(204, 71, 79, 22);
					jTextField24.setEditable(false);
				}
				{
					jTextField25 = new JTextField();
					jPanel2.add(jTextField25);
					jTextField25.setBounds(204, 99, 79, 22);
					jTextField25.setEditable(false);
				}
				{
					jTextField26 = new JTextField();
					jPanel2.add(jTextField26);
					jTextField26.setBounds(204, 127, 79, 22);
					jTextField26.setEditable(false);
				}
				{
					jTextField27 = new JTextField();
					jPanel2.add(jTextField27);
					jTextField27.setBounds(204, 155, 79, 22);
					jTextField27.setEditable(false);
				}
				{
					jTextField28 = new JTextField();
					jPanel2.add(jTextField28);
					jTextField28.setBounds(204, 183, 79, 22);
					jTextField28.setEditable(false);
				}
				{
					jLabel4 = new JLabel();
					jPanel2.add(jLabel4);
					jLabel4.setText("Häufigkeiten von 2:");
					jLabel4.setBounds(69, 74, 129, 15);
				}
				{
					jLabel5 = new JLabel();
					jPanel2.add(jLabel5);
					jLabel5.setText("Häufigkeiten von 3:");
					jLabel5.setBounds(69, 102, 129, 15);
				}
				{
					jLabel6 = new JLabel();
					jPanel2.add(jLabel6);
					jLabel6.setText("Häufigkeiten von 4:");
					jLabel6.setBounds(69, 130, 129, 15);
				}
				{
					jLabel7 = new JLabel();
					jPanel2.add(jLabel7);
					jLabel7.setText("Häufigkeiten von 5:");
					jLabel7.setBounds(69, 158, 129, 15);
				}
				{
					jLabel8 = new JLabel();
					jPanel2.add(jLabel8);
					jLabel8.setText("Häufigkeiten von 6:");
					jLabel8.setBounds(69, 186, 129, 15);
				}
			}
			{
				jButton1 = new JButton();
				getContentPane().add(jButton1);
				jButton1.setText("Einlesen");
				jButton1.setBounds(7, 144, 98, 22);
				jButton1.addActionListener(new ActionListener() {
					public void actionPerformed(ActionEvent evt) {
						jButton1ActionPerformed(evt);
					}
				});
			}
			{
				jLabel1 = new JLabel();
				getContentPane().add(jLabel1);
				jLabel1.setText("Durchschnitt:");
				jLabel1.setBounds(217, 147, 91, 15);
			}
			{
				jTextField21 = new JTextField();
				getContentPane().add(jTextField21);
				jTextField21.setBounds(313, 144, 79, 22);
			}
			{
				jButton2 = new JButton();
				getContentPane().add(jButton2);
				jButton2.setText("Rechnen");
				jButton2.setBounds(108, 144, 98, 22);
				jButton2.addActionListener(new ActionListener() {
					public void actionPerformed(ActionEvent evt) {
						jButton2ActionPerformed(evt);
					}
				});
			}
			pack();
			this.setSize(416, 425);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	
	private void jButton1ActionPerformed(ActionEvent evt) {
		
	}
	
	private void jButton2ActionPerformed(ActionEvent evt) {
		
	}

}
 

Antoras

Top Contributor
Ja stimmt, das war falsch. Ich Trottel.

Aber auch egal. daran liegt es nicht. So einen Fehler würde mir Eclipse direkt im Editor anzeigen. Aber ich bekommm erst beim Kompilieren die Fehlermeldungen. Das ist ja das komische.
 

Landei

Top Contributor
Also, der Aufruf...

Code:
private JTextField jTextField[] = new JTextField[20];

...erstellt ein Feld, das Platz für 20 JTextFields hat, aber nicht die 20 JTextFields selber. Die 20 Plätze werden (wie für alle Objekt-Typen) einfach mit null gefüllt, weswegen du ja auch eine NullPointerException bekommst, wenn du etwas mit den nicht vorhandenen JTextFields anstellen willst.

Lösung: Eine Schleife, die das Feld vor der Verwendung erst einmal füllt:
Code:
for (int i = 0; i < jTextField.length; i++) {
   jTextField[i] = new JTextField();
   //wenn du willst, kannst du gleich noch 
   //Eigenschaften für die Felder setzen
   //(Schriftart, Größe usw.) 
}

Übrigens: Bei *primitiven* Typen wie int, long, byte, boolean usw. gibt es kein "null", deshalb werden Felder diesen Typs mit 0 (bzw. false) vor-gefüllt.
 

Antoras

Top Contributor
Juhuuuu, es geht.
Danke dir!

Irgendwie komm ich mit den Swing/SWT Oberflächen noch nicht so richtig klar. Naja, das wird schon noch. Noch ein paar Mal den gleichen Fehler machen und ich behersch es ;)
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
L Unbekanntes Problem mit 2d Array Java Basics - Anfänger-Themen 6
J Problem mit einer Methode die gewissen Inhalt einer Array löschen soll Java Basics - Anfänger-Themen 9
J Problem mit einer Methode, die beliebig viele Objekte in Array speichern soll Java Basics - Anfänger-Themen 6
Splayfer Java Array Problem... Java Basics - Anfänger-Themen 2
A Array problem Java Basics - Anfänger-Themen 16
J Problem mit Array: 2 Klassen Java Basics - Anfänger-Themen 2
I wieder mit einer Umwandelung habe ich Problem (diesmal von char Array zu char) Java Basics - Anfänger-Themen 1
B Array Problem Java Basics - Anfänger-Themen 3
F Problem mit der Aufgabe(Array) Java Basics - Anfänger-Themen 21
H boolean Array Problem Java Basics - Anfänger-Themen 7
B Problem beim grundsätzlichen Verständnis bei Rekursion mit 2-dimensionalen Array Java Basics - Anfänger-Themen 6
S Problem: Array alle Einträge gleich Java Basics - Anfänger-Themen 10
L Array-Problem/Zufallszahlen Java Basics - Anfänger-Themen 7
G Problem mit Array Java Basics - Anfänger-Themen 2
K Problem mit Methode(Array,Boolean,ForSchleife) Java Basics - Anfänger-Themen 6
C Problem mit Arrays im Array Java Basics - Anfänger-Themen 11
A Problem mit Array Ausgabe Java Basics - Anfänger-Themen 7
L 2 dimensionales Array, Problem der Ausgabe Java Basics - Anfänger-Themen 4
E Array Problem Java Basics - Anfänger-Themen 1
L Problem mit Array Programm Java Basics - Anfänger-Themen 2
M Array problem Java Basics - Anfänger-Themen 9
M If und Array-Problem Java Basics - Anfänger-Themen 6
P OOP Array-Problem Java Basics - Anfänger-Themen 5
S Problem mit Array.Length Java Basics - Anfänger-Themen 2
R Array Problem Java Basics - Anfänger-Themen 17
U Methoden Zugriff auf Array von weiterer Methode einer Klasse, Rückgabewert Problem Java Basics - Anfänger-Themen 5
P Array queue problem Java Basics - Anfänger-Themen 1
E Array zu Liste - kleines Problem Java Basics - Anfänger-Themen 6
F Problem mit Array Java Basics - Anfänger-Themen 8
N OOP Problem mit Array Java Basics - Anfänger-Themen 17
M Problem mit 2D Array Java Basics - Anfänger-Themen 3
M Problem mit Array und replace Java Basics - Anfänger-Themen 3
D Array Problem Java Basics - Anfänger-Themen 4
F Array Problem !? Java Basics - Anfänger-Themen 6
M Erste Schritte Array Problem Java Basics - Anfänger-Themen 8
F Problem mit Array, Java Basics - Anfänger-Themen 4
F Problem: Verschlüsselung von String in Array Fehler Java Basics - Anfänger-Themen 2
S Problem bei Kollision zwischen Array-objekten! Java Basics - Anfänger-Themen 2
B Problem mit Array Java Basics - Anfänger-Themen 5
J Array Problem Java Basics - Anfänger-Themen 2
K Problem beim Array aufruf Java Basics - Anfänger-Themen 4
D Klassen Problem mit Eigener Array-Klasse Java Basics - Anfänger-Themen 10
N Array problem bei einem magischen Quadrats Java Basics - Anfänger-Themen 3
P Klassen Klassen mit Array Problem Java Basics - Anfänger-Themen 4
T Problem mit Array Konvertierung Java Basics - Anfänger-Themen 13
T ArrayIndexOutOfBoundsException - Problem mit Array-Größe Java Basics - Anfänger-Themen 4
L Array Problem NullPointerException Java Basics - Anfänger-Themen 3
K Problem: Array String to Integer Java Basics - Anfänger-Themen 2
M Char-Array Problem Java Basics - Anfänger-Themen 6
D Problem mit TextFeld Array Java Basics - Anfänger-Themen 18
A Array Zugriff- Problem Java Basics - Anfänger-Themen 5
V 2D - Objekt Array Problem Java Basics - Anfänger-Themen 3
K Java Array Problem Java Basics - Anfänger-Themen 3
L Problem mit Array Java Basics - Anfänger-Themen 3
K kleines Array-Problem Java Basics - Anfänger-Themen 6
X Array out of bounds problem Java Basics - Anfänger-Themen 7
M Array Problem Java Basics - Anfänger-Themen 2
K Generische Klasse mit innerer Klasse | Problem mit Array Java Basics - Anfänger-Themen 6
E Array Problem... Java Basics - Anfänger-Themen 14
P array problem Java Basics - Anfänger-Themen 9
P Codeschnipsel Verständnis Problem (Array) Java Basics - Anfänger-Themen 6
F Array Problem bei ByteburgTarif Java Basics - Anfänger-Themen 2
P Problem mit Laden und Ausgeben eines array-Objekts Java Basics - Anfänger-Themen 4
A Problem mit einem Array aus JButtons Java Basics - Anfänger-Themen 4
D Array multiplikations Problem Java Basics - Anfänger-Themen 26
D Array Problem Java Basics - Anfänger-Themen 5
B Mehrdimensionale Array Problem Java Basics - Anfänger-Themen 12
T Array-Vector Problem Java Basics - Anfänger-Themen 18
T Blutiger Anfänger mit Array Problem Java Basics - Anfänger-Themen 8
T problem mit array Java Basics - Anfänger-Themen 9
S String split array.length Problem Java Basics - Anfänger-Themen 3
B Problem mit Object Array Java Basics - Anfänger-Themen 8
W Problem mit BubbleSort und Array Java Basics - Anfänger-Themen 10
G Problem mit der Rückgabe von einem Array Java Basics - Anfänger-Themen 3
G Array-Problem Java Basics - Anfänger-Themen 3
M sinus berechnen array problem Java Basics - Anfänger-Themen 2
C array problem Java Basics - Anfänger-Themen 7
G Array ,Matrix Problem Java Basics - Anfänger-Themen 20
K Problem mit 2 Dimensionalen Array Java Basics - Anfänger-Themen 4
D Array reverse Problem, da Referenz nicht auf tmpArray zeigt Java Basics - Anfänger-Themen 4
G Kleines Problem mit Array Java Basics - Anfänger-Themen 14
0 Array problem Java Basics - Anfänger-Themen 4
S Problem mit Array-Erstellung Java Basics - Anfänger-Themen 5
A array problem Java Basics - Anfänger-Themen 4
G array Problem Java Basics - Anfänger-Themen 9
H Problem mit array Java Basics - Anfänger-Themen 5
zilti Array-Problem Java Basics - Anfänger-Themen 6
J Array - Vertauschen Problem mit char/int Java Basics - Anfänger-Themen 6
M Problem mit Array in Methodenkopf Java Basics - Anfänger-Themen 2
K problem beim schreiben in ein int-array Java Basics - Anfänger-Themen 9
S JTable Problem mit einzufügendem Array Java Basics - Anfänger-Themen 6
D Problem mit Array brauche schnell Hilfe Java Basics - Anfänger-Themen 11
R Problem mit AbstractTableModel oder Array! Java Basics - Anfänger-Themen 5
G Problem mit Array bei einem 4-Gewinnt Spiel Java Basics - Anfänger-Themen 2
K problem mit resultset und 2d-array Java Basics - Anfänger-Themen 3
G Problem mit array Java Basics - Anfänger-Themen 2
P Array-Problem Java Basics - Anfänger-Themen 4
L Array Problem Java Basics - Anfänger-Themen 9
B Array Manipulation Problem Java Basics - Anfänger-Themen 11
B Array Problem (out of Bounds Exception) Java Basics - Anfänger-Themen 3

Ähnliche Java Themen

Neue Themen


Oben