wo liegt der Fehler? (JTable)

derHuber

Mitglied
Hallo zusammen,

ich habe mich in den letzten Tagen mit den JTables auseinandergesetzt (Danke an Beni für die tolle Zusammenfassung).
Jetzt wollte ich aus dem dritten Lösungsvorschlag (defaultTableModel) eine eigene Klasse + Konstruktormethode schreiben, da ich Sie für ein privates Projekt gut gebrauchen könnte.
Der Code basiert auf "Möglichkeit 3" des Authors Beni:

http://www.java-forum.org/java-faq-beitraege/7035-jtable-teil-2-kommen-daten-tabelle.html

und wurde von mir angepasst (Lernstand in der Schule).

Kurzfassung der Klasse: mit JTableVector (String title, int zeile, int spalte) soll ein JTable erstellt werden welches gleich zeile Zeilen und spalte Spalten haben soll. Mein Code:
Java:
import javax.swing.*;
import java.awt.*;
import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Vector;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;


public class JTableVector extends JFrame{


  public JTableVector(String title, int zeile, int spalte){
    super(title);
    setSize(300,300);
    setVisible(true);
    setResizable(true);
    setDefaultCloseOperation(EXIT_ON_CLOSE);
    Container cp = getContentPane();
    cp.setLayout(new BorderLayout());

    String[] titles = new String[] {"a", "b"};

    final DefaultTableModel model = new DefaultTableModel (titles,0);
    JTable jtblTabelle = new JTable(model);
    
    neueZeile(zeile);
    neueSpalte(spalte);

    cp.add(new JScrollPane (jtblTabelle),BorderLayout.CENTER);
    pack();
  }
  
  public static Vector erstelleDatenVector(String prefix, int groesse){
    Vector vector = new Vector(groesse);
    for(int i = 0; i<groesse; i++)
      vector.add(prefix +" : " + groesse + " : " + i);
      return vector;
  }
  
  public static void neueZeile (int zeile){
    for(int i = 0; i==zeile; i++)
    int groesse = model.getColumnCount();
    Vector newDatas = erstelleDatenVector ("Zeile", groesse);
    model.addRow(newDatas);
  }

  public static void neueSpalte(int spalte) {
    for(int i = o; i==spalte; i++)
    int groesse = model.getRowCount();
    Vector newDatas = erstelleDatenVector( "Spalte", groesse );
    String name = String.valueOf( model.getColumnCount() );
    model.addColumn( name, newDatas );
  }

}

Die Fehlermeldung:
Code:
int groesse = model.getColumnCount();
        ^
JTableVector.java:49:5: not a statement
    int groesse = model.getColumnCount();
    ^
JTableVector.java:49:17: illegal start of expression
    int groesse = model.getColumnCount();
                ^
JTableVector.java:49:24: ';' expected
    int groesse = model.getColumnCount();
                       ^
Ich hab verschiedene Sachen ausprobiert. z.B.: Wenn die methode als For-Schleife in die Konstruktor-Methode reingeschrieben wird meckert der Compiler nicht. Was mich darauf schließen lässt, dass die ansteuerung nicht korrekt ist. Aber wieso und warum ist mir total unklar. Würde mich über Erklärungen und Hilfen sehr freuen.

Danke im voraus

gruss Fabi
 
Zuletzt bearbeitet von einem Moderator:

Landei

Top Contributor
model ist eine lokale Variable im Konstruktor, du kannst von außen nicht darauf zugreifen, und wenn der Konstruktor fertig ist, ist sie "weg". Mache eine Instanzvariable daraus:

Java:
public class JTableVector extends JFrame{
 
  final DefaultTableModel model;
 
  public JTableVector(String title, int zeile, int spalte){
    ...
    model = new DefaultTableModel (titles,0);
    ...
  }
  
  public static void neueZeile (int zeile){
    for(int i = 0; i==zeile; i++) {
      int groesse = model.getColumnCount();  //<-- jetzt ist model hier "sichtbar"
      Vector newDatas = erstelleDatenVector ("Zeile", groesse);
      model.addRow(newDatas);
    }
  }
  ...

}
[edit] vergessene Klammern
 
Zuletzt bearbeitet:
S

SlaterB

Gast
und eine for-Schleife ohne Klammern kann nur einen Unter-Befehl aufnehmen,
eine Variablendeklaration, deren Variable danach nicht mehr verwendet werden kann, ist daher intelligenterweise nicht erlaubt
 

derHuber

Mitglied
Danke für die schnelle Antwort!

Das klingt total logisch und ich dachte mir auch sowas in der Richtung.
Ich habe es gleich geändert doch die Fehlermeldungen sind immer noch die gleichen...

Java:
import javax.swing.*;
import java.awt.*;
import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Vector;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;


public class JTableVector extends JFrame{

final DefaultTableModel model;

  public JTableVector(String title, int zeile, int spalte){
    super(title);
    setSize(300,300);
    setVisible(true);
    setResizable(true);
    setDefaultCloseOperation(EXIT_ON_CLOSE);
    Container cp = getContentPane();
    cp.setLayout(new BorderLayout());

    String[] titles = new String[] {"a", "b"};

    model = new DefaultTableModel (titles,0);
    JTable jtblTabelle = new JTable(model);
    
    neueZeile(zeile);
    neueSpalte(spalte);

    cp.add(new JScrollPane (jtblTabelle),BorderLayout.CENTER);
    pack();
  }
  
  public static Vector erstelleDatenVector(String prefix, int groesse){
    Vector vector = new Vector(groesse);
    for(int i = 0; i<groesse; i++)
      vector.add(prefix +" : " + groesse + " : " + i);
      return vector;
  }
  
  public static void neueZeile (int zeile){
    for(int i = 0; i==zeile; i++)
    int groesse = model.getColumnCount();
    Vector newDatas = erstelleDatenVector ("Zeile", groesse);
    model.addRow(newDatas);
  }

  public static void neueSpalte(int spalte) {
    for(int i = 0; i==spalte; i++)
    int groesse = model.getRowCount();
    Vector newDatas = erstelleDatenVector( "Spalte", groesse );
    String name = String.valueOf( model.getColumnCount() );
    model.addColumn( name, newDatas );
  }

}
 
Zuletzt bearbeitet:

derHuber

Mitglied
und eine for-Schleife ohne Klammern kann nur einen Unter-Befehl aufnehmen,
eine Variablendeklaration, deren Variable danach nicht mehr verwendet werden kann, ist daher intelligenterweise nicht erlaubt

Bezieht sich der Satz auf "final", da muss ich gestehen, dass ich das einfach aus dem Beispiel übernommen habe. Ich habe aber dennoch "public" ausprobiert, was auch nichts gebracht hat.

Kannst du mir das genauer erklären?

edit: Tschuldigung für die vergessenen JAVA-Tags.
 
S

SlaterB

Gast
for (...)
a;
b;
c;

die for-Schleife wiederholt nur den a-Befehl, nicht b oder den Rest der Methode oder was auch immer,
es macht daher keinen Sinn in a eine Variable zu deklarieren, was sollte mit der noch passieren?

für mehrere Befehle verwendet man Klammern (und zur Ansicht Einrückung, für den Compiler aber egal)
Java:
for (...)  {
  a;
  b;
}
c;
dann kann man auch Variablen deklarieren und vieles andere
 

derHuber

Mitglied
Danke, das war mir nicht bewusst ich habe es gleich abgeändert. Jetzt kommen keine Fehlermeldungen von Compiler.

Ich habe noch zwei Fragen:
Was bewirkt "final"? (google, API usw. habe ich nichts brauchbares gefunden)
was bewirkt pack();? (bei der API-Erklärung ist der Funken nicht wirklich übergesprungen)

Habe das Programm jetzt mit einer Testklasse geprüft aber es werden keine Zeilen/Spalten erstellt.(Bin noch dran den Fehler zu suchen!)
 

Ebenius

Top Contributor
  • [c]final[/c] an einer Variablendeklaration bewirkt, dass die Variable nur einmal zugewiesen werden kann:
    Java:
    final int a = 0;
    a = 1; // compile error, a is final and assigned/initialized before
  • [c]final[/c] an einer Klassendeklaration bewirkt, dass keine Klasse von dieser Klasse erben kann.
  • [c]final[/c] an einer Interface-Deklaration bewirkt, dass kein Interface von diesem Interface erben kann.
  • [c]final[/c] an einer Methode bewirkt, dass die Methode in keiner Ableitung überschrieben werden kann.
[c]pack()[/c] setzt das Fenster auf die Größe die es laut [c]getPreferredSize()[/c] haben muss. Je nach LayoutManager werden dann die Kinder des Fensters gefragt die wieder ihre Kinder fragen und so weiter. Am Ende kommt raus, dass das Fenster 615 mal 360 Pixels groß sein muss, damit alles so groß sein kann wie es möchte. Und dann wird die Größe des Fensters auf diese Größe gesetzt.

Ebenius
 

derHuber

Mitglied
Danke für die ausführliche Erklärung. Leider bin ich dem Fehler noch nicht auf die Schliche gekommen. Denke aber rein logisch gesehen dürfte der Code funktionieren.

Klasse JTableVector:
Java:
import javax.swing.*;
import java.awt.*;
import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Vector;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;


public class JTableVector extends JFrame{

public DefaultTableModel model;

  public JTableVector(String title, int zeile, int spalte){
    super(title);
    setSize(300,300);
    setVisible(true);
    setResizable(true);
    setDefaultCloseOperation(EXIT_ON_CLOSE);
    Container cp = getContentPane();
    cp.setLayout(new BorderLayout());

    String[] titles = new String[] {"a", "b"};

    model = new DefaultTableModel (titles,0);
    JTable jtblTabelle = new JTable(model);
    cp.add(new JScrollPane (jtblTabelle),BorderLayout.CENTER);

    neueZeile(zeile);
    neueSpalte(spalte);

    pack();
  }
  
  public static Vector erstelleDatenVector(String prefix, int groesse){
    Vector vector = new Vector(groesse);
    for(int i = 0; i<groesse; i++)
      vector.add(prefix +" : " + groesse + " : " + i);
      return vector;
  }
  
  public void neueZeile (int zeile){
    for(int i = 0; i==zeile; i++){
    int groesse = model.getColumnCount();
    Vector newDatas = erstelleDatenVector ("Zeile", groesse);
    model.addRow(newDatas);
    }
  }

  public void neueSpalte(int spalte) {
    for(int i = 0; i==spalte; i++){
    int groesse = model.getRowCount();
    Vector newDatas = erstelleDatenVector( "Spalte", groesse );
    String name = String.valueOf( model.getColumnCount() );
    model.addColumn( name, newDatas );
    }
  }

}
[/Java]

und meine Testklasse:

[code=Java]

public class JTableVectortest {

  public static void main(String[] args) {
    new JTableVector("Datenbank",3,3);
  }
}

Anmerkung zum Stil, Aufbau o.ä. sind ausdrücklich erwünscht.

Der Compiler gibt nachdem er das Programm aussführt folgendes aus.
Java:
Note: JTableVector.java uses unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
 
Zuletzt bearbeitet:

derHuber

Mitglied
Hallo Zusammen,

Ich habe den Fehler gefunden!

die For-Schleifen Bedingungen waren falsch.
Java:
for(int i = 0; i<zeile; i++)
for(int i = 0; i<spalte; i++)

Danke nochmal an alle die geholfen haben!! :toll::applaus:
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
ohneInformatik; Dynamische Zinsen. Wo liegt der Fehler? Java Basics - Anfänger-Themen 4
J Anfänger, Fehler; "Der Hund liegt begraben" Java Basics - Anfänger-Themen 3
R Fehlermeldung aber WO liegt der Fehler? Java Basics - Anfänger-Themen 7
W Wo liegt der Fehler? Java Basics - Anfänger-Themen 8
G Input/Output Wo liegt mein Fehler? Java Basics - Anfänger-Themen 4
P wo liegt der Fehler? Java Basics - Anfänger-Themen 2
W Compiler-Fehler Fehler - <identifier> expected, wo liegt mein Fehler? Java Basics - Anfänger-Themen 4
B Compiler-Fehler Wo liegt der Fehler? Java Basics - Anfänger-Themen 3
J Wo liegt nur an dieser einfachen Bedingung mein Fehler? Java Basics - Anfänger-Themen 8
R Schaffe es nicht Random-Programmierung zu vollenden. Wo liegt der Fehler in diesem Code? Java Basics - Anfänger-Themen 13
J Wo liegt der Fehler? Java Basics - Anfänger-Themen 7
S GaussJordan in Java, wo liegt mein Fehler? Java Basics - Anfänger-Themen 4
T Wo liegt der Fehler ? -.- Java Basics - Anfänger-Themen 3
P Datentypen Fehler nur wo liegt das Problem? Java Basics - Anfänger-Themen 7
R NullPointerException ,wo liegt der Fehler? Java Basics - Anfänger-Themen 2
D Primzahlen ausgeben. Wo liegt der Fehler? Java Basics - Anfänger-Themen 4
M NullPointerException - Fehler beheben, nur, wo liegt er? Java Basics - Anfänger-Themen 13
D Wo liegt der Fehler? Java Basics - Anfänger-Themen 11
F wo liegt der Fehler?? Java Basics - Anfänger-Themen 7
Screen Scanner Arrays wo liegt mein Fehler? Java Basics - Anfänger-Themen 11
Screen Wo liegt der Fehler? Java Basics - Anfänger-Themen 3
K Wo liegt der Fehler wieder ? Java Basics - Anfänger-Themen 14
I String, Split, match, wo liegt mein Fehler ? Java Basics - Anfänger-Themen 4
K Hallo, woran liegt der Fehler ? Java Basics - Anfänger-Themen 6
M Felder (Wo liegt der Fehler?) Java Basics - Anfänger-Themen 2
P Wo liegt der Fehler? *verzweifel* Java Basics - Anfänger-Themen 10
Z Wo liegt der Fehler? Java Basics - Anfänger-Themen 8
S Array bleibt leer, wo liegt mein Fehler? Verzeichnisinhalt s Java Basics - Anfänger-Themen 8
E Wo liegt hier der Fehler? Java Basics - Anfänger-Themen 13
L wo liegt hier der fehler? Java Basics - Anfänger-Themen 3
R Wo liegt der Fehler? Java Basics - Anfänger-Themen 10
W Wo liegt denn heir der Fehler? Java Basics - Anfänger-Themen 10
N wo liegt daran der fehler? Java Basics - Anfänger-Themen 6
H weiss nicht wo hier der fehler liegt Java Basics - Anfänger-Themen 3
A wo liegt der fehler im programm? Java Basics - Anfänger-Themen 9
J Mein Programm läuft bei der ersten Eingabe nicht mehr weiter, woran liegt das? Java Basics - Anfänger-Themen 6
M BerechneEtwas Weiss jemand woran es liegt Java Basics - Anfänger-Themen 8
B Keine Ausgabe .. Woran liegt das? Ich komme nicht weiter Java Basics - Anfänger-Themen 14
A Class not found - Jar liegt am classpath Java Basics - Anfänger-Themen 2
M Wo liegt der Unterschied? Deklaration Klasse oder Konstruktur Java Basics - Anfänger-Themen 3
M Liegt hier bereits ein Bad Smell vor? Java Basics - Anfänger-Themen 9
J ResultSet.getStrin - doch kein String? oder wo liegt das Problem? Java Basics - Anfänger-Themen 3
A Datum prüfen, ob es vor einem anderen Datum liegt Java Basics - Anfänger-Themen 2
K OOP Methoden überladen, wo liegt das Problem? Java Basics - Anfänger-Themen 22
I OOP This-Referenzs > wo liegt mein Denkfehler? Java Basics - Anfänger-Themen 24
B Class wird nicht gefunde obwohl sie im gleichen Ordner liegt Java Basics - Anfänger-Themen 8
G Variable welche in anderer Klasse liegt, verändern. Java Basics - Anfänger-Themen 2
J Arrays: Wo liegt das Problem? Java Basics - Anfänger-Themen 6
H In welchem Ordner liegt das jar file? Java Basics - Anfänger-Themen 2
M Wo liegt der Quelltext von System.out.println() Java Basics - Anfänger-Themen 3
M JTable updaten woran liegt es bloß? Java Basics - Anfänger-Themen 2
F Kann mir jemand bei dem Fehler helfen? Java Basics - Anfänger-Themen 6
Juelin jedit Fehler beim starten Java Basics - Anfänger-Themen 2
I Frage Thymeleaf -> Fehler ignorieren und mit "" ersetzen? Java Basics - Anfänger-Themen 15
E Matrizenmultiplikation Fehler Java Basics - Anfänger-Themen 0
Z Fehler Zeiterfassungsprogramm Anzeige Java Basics - Anfänger-Themen 3
C SwingWorker mit Fehler Java Basics - Anfänger-Themen 2
monsterherz Fehler Semikolon fehlt - ich weiss aber nicht wo da noch eines hin sollte... Java Basics - Anfänger-Themen 21
G Compiler-Fehler Fehler in Zeile 1 beheben, wie? Java Basics - Anfänger-Themen 9
W Fehler in der Datei pom.xml Java Basics - Anfänger-Themen 19
marcelnedza Finde meinen Fehler in einer Methode nicht, Java Karol Java Basics - Anfänger-Themen 15
monsterherz einfache Methode mit Fehler den ich nicht finde Java Basics - Anfänger-Themen 21
monsterherz if / else if mit Fehler den ich leider nicht finde Java Basics - Anfänger-Themen 11
N Interpreter-Fehler Compiler zeigt keine Fehler an, aber das Programm läuft nicht (BlueJ) Java Basics - Anfänger-Themen 2
Fiedelbambu deriveFont Fehler wer kann Helfen? Java Basics - Anfänger-Themen 4
I Ical4j / Kalender einlesen von URL - Fehler: "Unparseable date" Java Basics - Anfänger-Themen 16
Lion.King Fehler in double und int Java Basics - Anfänger-Themen 7
H BlueJ: was genau ist hier der Fehler? Java Basics - Anfänger-Themen 14
berserkerdq2 Habe ein Spiel entwickelt, dass immer in der 4 Runde einen cast-Fehler erhält Java Basics - Anfänger-Themen 3
D Datentypen LocalDate.parse() ergibt Fehler Java Basics - Anfänger-Themen 5
stormyark Fehler beim überschreiben einer Variable Java Basics - Anfänger-Themen 1
T String Array Fehler beim Index Java Basics - Anfänger-Themen 3
N Fehler "Cannot instantiate the type" Java Basics - Anfänger-Themen 3
L Ich weis nicht was der Fehler ist! Java Basics - Anfänger-Themen 14
L30nS JNI Fehler, JRE und JDK Java Basics - Anfänger-Themen 8
E Executable jar file fehler Java Basics - Anfänger-Themen 9
S Fehler beim Programm Java Basics - Anfänger-Themen 2
U Warum kriege ich hier eine nullpointer exception, sehe den Fehler nicht (swing) Java Basics - Anfänger-Themen 1
J Syntax-Fehler? Java Basics - Anfänger-Themen 2
Jose05 Fehler im Programm feststellen Java Basics - Anfänger-Themen 2
S Methoden 2 non-static Methoden, trotzdem Fehler "non static method can not be referenced from a static context" Java Basics - Anfänger-Themen 9
G Taschenrechner ergibt Fehler in if-Abfrage Java Basics - Anfänger-Themen 6
I Fehler bei for-Schleife Java Basics - Anfänger-Themen 6
lol5443 Tic Tac Toe Fehler Java Basics - Anfänger-Themen 5
K Fehler bei der Implementierung Java Basics - Anfänger-Themen 6
N Fehler im Code (Aufgabe für Anfänger) Java Basics - Anfänger-Themen 11
W Verschachtelte If-else --> finde meinen Fehler nicht Java Basics - Anfänger-Themen 30
J Fehler bei array aus anderer Klasse Java Basics - Anfänger-Themen 3
H Fehler bei integer Division Java Basics - Anfänger-Themen 28
C Fehler beim erstellen eines Objektes Java Basics - Anfänger-Themen 3
N Was bedeutet dieser Fehler Java Basics - Anfänger-Themen 2
fuerteb Compiler-Fehler Methode wird nicht bzw. als Fehler erkannt Java Basics - Anfänger-Themen 4
Lion.King Fehler Java Basics - Anfänger-Themen 5
AlexG. Nullpointer exeption Fehler Java Basics - Anfänger-Themen 0
C Fehler im Code Java Basics - Anfänger-Themen 10
Aqtox Hallo ich muss für die Schule ein Wuerfell Duell erstellen jedoch habe ich ein fehler Java Basics - Anfänger-Themen 4
V Wer findet den Fehler :) Java Basics - Anfänger-Themen 12
B ArrayIndexOutOfBoundsException, ich finde den Fehler nicht? Java Basics - Anfänger-Themen 10
A Compiler Fehler - not a statement Java Basics - Anfänger-Themen 2
Arita welche Fehler gibt es noch? wie kann ich es noch vervollständigen Java Basics - Anfänger-Themen 15

Ähnliche Java Themen

Neue Themen


Oben