Veröffentlicht 7. Juni 200817 j hallo, ich habenne frage. Ich wollte ein JTable implementieren und ich habe die erforderlichen Klassen importiert (javax.swing.*) NUn möchte ich ein zweidimensionales Array einlesen String[][], aber das geht nicht. ES wird imemr angezeigt: JTable(String[][]) not defined. Wo liegt der Fehler? Selbst wenn ich das Beispiel aus dem Lehrbuch komplett kopiere, komtm der Fehler... LG Bearbeitet 7. Juni 200817 j von danvan
7. Juni 200817 j ah, hat sich geklrt. Hab mir mal die KOnstruktoren besorgt. Den Konstruktor, den ich wollte, gibt es offenbar nicht. Ich weiß nur nicht, warum das dann im Lehrbuch steht ...
7. Juni 200817 j Die Fehlermeldung sagt Dir, daß es den Konstruktor, den Du benutzt, nicht gibt. Ein Blick in die Java API bestätigt das. perdi würde jetzt erwähnen, seine Kristallkugel sei in Reparatur . Will heißen, ohne Deinen Code zu sehen, kann keiner sagen, was genau Du falsch machst. Bis auf die Tatsache, daß Du eben den falschen Konstruktor nutzt, kann man Dir nur mit Ausführungen zur JTable helfen.
7. Juni 200817 j hallo newlukai :-) bin aj schon drauf gekommen. jetzt gibte s das naächste Prob WEnn ich die argumente an den korrekten Konstruktor abgebe, dann bekomem ich ne arrayIndexOutOfBoundsException Woran liegt das nun? Es wird ein Array befüllt mit: s[0] = wert (mit ner for-schleife) dazu nochdie zellüberschriften: String[] headers = {"x","f(x)"}; wenn ich nun aufrufe: JTable tab = new JTable (s, headers); gibt es die Exception. Was bedeutet diese Exception denn generell? Bearbeitet 7. Juni 200817 j von danvan
7. Juni 200817 j hier mal der code: public static String[][] printMults( int num, int male) { String[][] s = {}; for (int i=0; i<=male; i++) { long zahl = Math.round(Math.pow(num, i)); String hib = String.valueOf(zahl); s[i][0] = hib; } return s; } // Methode zur Ausgabe des Multiplikationsarrays hier ist der abschnitt zm einlesen in die tabelle: String[][] dat = printMults(a,; String[] headers = {"x","f(x)"}; JTable tab = new JTable(dat, headers); f.add(tab); // f ist das Frameobjekt [/code] Warum gibt es beid er ausführung ne ArrayIndexOutofBoundException ?
7. Juni 200817 j Der Fehler tritt nicht erst auf wenn du das Array an den Konstruktor der JTable übergibst sondern schon vorher in deiner Methode printMults. String[][] s = {}; Damit erzeugst du ein vollkommen leeres Array, und da Java keine dynamisches Arrays kennt, kannst du diesem Array danach auch keine Werte zuweisen. s[i][0] = hib; Sodass dieser Code schon eine IndexOutOfBounds-Exception wirft, weil schon das erste Eintragen in das Array über der Grenze des Arrays liegt. Du musst dementsprechend also vorher schon eine bestimmte Größe für das Array angeben.
7. Juni 200817 j ah,d anke dragon. wie mache ich das dann, den konstruktor so aufrifen, dass ich die länge als parameter mitangebe? LG
7. Juni 200817 j das problem ist jetzt behoben, aber dieslbe exception wuird weiterhin ausgeworfen. ich habe aber kein weietres array deklariert, bis auf das hier: String[][] dat = printMults(a,;[/CODE] ist das zulässig?
7. Juni 200817 j Solange die Methode ein Array mit 2 Dimensionen zurück gibt, ist das zulässig ja. Wie sieht denn deine Methode "printMults" mittlerweile aus?
7. Juni 200817 j hallo dragon, hier ist die methode: public static String[][] printMults( int num, int male) { String[][] s = new String[male][male]; for (int i=0; i<=male; i++) { long zahl = Math.round(Math.pow(num, i)); String hib = String.valueOf(zahl); s[i][0] = hib; } return s; }
8. Juni 200817 j Was ich jetzt sage, ist nicht durch Ausprobieren fundiert Ich glaube, Du mußt die Arrays die Du im Arrays verwendest, erst einmal erzeugen: public static String[][] printMults( int num, int male) { String[][] s = new String[male][male]; for (int i=0; i<=male; i++) { long zahl = Math.round(Math.pow(num, i)); String hib = String.valueOf(zahl); s[i] = new String[male]; s[i][0] = hib; } return s; }
8. Juni 200817 j @Newlukai; soweit ich weiß muss man dies nicht machen. Und das Problem mit der Methode wird zurzeit wahrscheinlich an folgender Stelle bestehen: for (int i=0; i[B]<=[/B]male; i++) Wenn du dein Array mit einer Größe von "male" erzeugst, geht der Index des Arrays von 0 - (male -1). Deine Schleife zählt die Variable aber bis zum Wert von "male" hoch, wodurch du beim letzten Durchlauf wieder über die Grenzen des Arrays gehst. Des weiteren, zwar kein Fehler, aber ich sehe den Grund dafür noch nicht. Du erstellst ein zweidimensionales Array mit n-Feldern, dabei hat jedes Feld aber wieder genau n-Felder. in der 2. Dimension belegst du aber nur das 1. Feld mit einem Wert, die restlichen Felder sind also unnütz, soweit ich das jedensfall sehe.
8. Juni 200817 j hallo dragon, ist mr schon aufgefallen und habe es gelöst. Die apllikation läuft jetzt ohen Murren. LG
Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.