Zum Inhalt springen

anfängerfrage: JTable (String[][]) für euch kein prob ;)


Empfohlene Beiträge

Geschrieben (bearbeitet)

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 von danvan
Geschrieben

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 ...

Geschrieben

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.

Geschrieben (bearbeitet)

hallo newlukai :-)

bin aj schon drauf gekommen. jetzt gibte s das naächste Prob :rolleyes:

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 von danvan
Geschrieben

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 ?

Geschrieben

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.

Geschrieben

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?

Geschrieben

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;

	}

Geschrieben

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;

}

Geschrieben

@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.

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...