Ich versuche, ein 9x9 Raster von TextFields zu erstellen, die alle in einem Array sind. Die obere linke Seite würde Felder [1] [1] und die unteren rechten Felder [9] [9] heißen. Der Code, den ich bisher geschrieben habe, istErstellen mehrerer textFields mit einem Array
int NUM_FIELDS_X = 1; //x textField
int NUM_FIELDS_Y = 1; // y textField
int x = 21; // x location of textField
int y = 21; // y location of textField
TextField[][] fields = new TextField[NUM_FIELDS_X][NUM_FIELDS_Y]; {
for (NUM_FIELDS_Y =1; NUM_FIELDS_Y <= 9; NUM_FIELDS_Y++) {
for (NUM_FIELDS_X =1; NUM_FIELDS_X <= 9; NUM_FIELDS_X++) {
fields[NUM_FIELDS_X][NUM_FIELDS_Y] = new TextField();
fields[NUM_FIELDS_X][NUM_FIELDS_Y].setColumns(10);
fields[NUM_FIELDS_X][NUM_FIELDS_Y].setBounds(x, y, 32, 32);
frame.getContentPane().add(fields[NUM_FIELDS_X][NUM_FIELDS_Y]);
x=x+32;
}
y = y+32;
}
}
aber ich erhalte eine Fehlermeldung, sobald ich es starten, und die for-Schleifen beginnen nicht. Die Fehlermeldung im Empfangs
istjava.lang.ArrayIndexOutOfBoundsException: 1
at sudokuSolver.sudokuInterface.initialize(sudokuInterface.java:70)
at sudokuSolver.sudokuInterface.<init>(sudokuInterface.java:44)
at sudokuSolver.sudokuInterface$1.run(sudokuInterface.java:31)
at java.awt.event.InvocationEvent.dispatch(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$500(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$JavaSecurityAccessImpl.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)
Danke für die Hilfe Akash Jha und Coder-croc, ich habe es geschafft, es zu beheben. Ich habe den Code
int NUM_FIELDS_X = 0; //x number of textField
int NUM_FIELDS_Y = 0; // y number of textField
int x = 21; // x location of textField
int y=21; // y location of textField
TextField[][] fields = new TextField[9][9]; {
for (NUM_FIELDS_Y =0; NUM_FIELDS_Y < 9; NUM_FIELDS_Y++) {
x=21;
for (NUM_FIELDS_X =0; NUM_FIELDS_X <= 8; NUM_FIELDS_X++) {
fields[NUM_FIELDS_X][NUM_FIELDS_Y] = new TextField();
fields[NUM_FIELDS_X][NUM_FIELDS_Y].setColumns(10);
fields[NUM_FIELDS_X][NUM_FIELDS_Y].setBounds(x, y, 32, 32);
frame.getContentPane().add(fields[NUM_FIELDS_X][NUM_FIELDS_Y]);
x=x+32;
}
y = y+32;
}
}
Eigentlich wäre oben links 'fields [0] [0]' und unten rechts 'fields [8] [8]'. Arrays sind in Java nullbasiert. Auch, _ "Ich bekomme einen Fehler" _ ist nicht ausreichend. Würden Sie Ihr Auto zur Reparatur bringen und sich weigern, dem Mechaniker die Symptome zu erklären? Bitte posten Sie die komplette Fehlermeldung und stapeln Sie den Trace, indem Sie Ihre Frage bearbeiten. Formatieren Sie den Stack-Trace als Code. –
@JimGarrison das ist der Grund, warum ich sowohl NUM_FIELDS_X als auch Y am Anfang auf 1 setze, also wäre es nicht 0 - 8 –
So funktioniert Array-Deklaration nicht. Bitte lesen Sie den Java-Tutorial-Abschnitt zu Arrays erneut. Sie können den Ursprungsindex eines Arrays nicht ändern, es ist immer NULL. –