Fehler bei JTable

Status
Nicht offen für weitere Antworten.

Dana

Aktives Mitglied
Hallo Freunde,
ich habe eine JTable programmiert. Es läuft alles soweit. Bei der Tabellenanzeige kriege ich andauernd solche Fehlermeldung. In der Zeile 76 der TestTableModel die als Ursache des Problems erkannt wird stehlt
Code:
  // Gibt das Objekt aus der jeweiligen Zelle der Tabelle zurueck
public Object getValueAt(int zeileNr, int spalteNr)
{
 Vector zeile = (Vector)daten.elementAt(zeileNr);

 Object s = zeile.elementAt(spalteNr);
 String st = s.toString();
      if (st.equals("true"))
        return Boolean.TRUE;
      else if (st.equals("false"))
        return Boolean.FALSE;
      else return s;

// return zeile.elementAt(spalteNr);
}

Ich bin für jeden Tipp dankbar

Code:
java.lang.ArrayIndexOutOfBoundsException: 7 >= 2 
	at java.util.Vector.elementAt(Vector.java:427) 
	at Testverwaltung.TestTableModel.getValueAt(TestTableModel.java:76) 
	at javax.swing.JTable.getValueAt(JTable.java:1760) 
	at javax.swing.JTable.prepareRenderer(JTable.java:3686) 
	at javax.swing.plaf.basic.BasicTableUI.paintCell(BasicTableUI.java:1149) 
	at javax.swing.plaf.basic.BasicTableUI.paintCells(BasicTableUI.java:1051) 
	at javax.swing.plaf.basic.BasicTableUI.paint(BasicTableUI.java:974) 
	at javax.swing.plaf.ComponentUI.update(ComponentUI.java:142) 
	at javax.swing.JComponent.paintComponent(JComponent.java:541) 
	at javax.swing.JComponent.paint(JComponent.java:808) 
	at javax.swing.JComponent.paintChildren(JComponent.java:647) 
	at javax.swing.JComponent.paint(JComponent.java:817) 
	at javax.swing.JViewport.paint(JViewport.java:707) 
	at javax.swing.JComponent.paintChildren(JComponent.java:647) 
	at javax.swing.JComponent.paint(JComponent.java:817) 
	at javax.swing.JComponent.paintWithOffscreenBuffer(JComponent.java:4771) 
	at javax.swing.JComponent.paintDoubleBuffered(JComponent.java:4724) 
	at javax.swing.JComponent._paintImmediately(JComponent.java:4668) 
	at javax.swing.JComponent.paintImmediately(JComponent.java:4477) 
	at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:410) 
	at javax.swing.SystemEventQueueUtilities$ComponentWorkRequest.run(SystemEventQueueUtilities.java:117) 
	at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:178) 
	at java.awt.EventQueue.dispatchEvent(EventQueue.java:448) 
	at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:197) 
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150) 
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:144) 
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:136) 
	at java.awt.EventDispatchThread.run(EventDispatchThread.java:99) 
java.util.NoSuchElementException: Vector Enumeration 
	at java.util.Vector$1.nextElement(Vector.java:303) 
	at javax.swing.plaf.basic.BasicTableHeaderUI.getPreferredSize(BasicTableHeaderUI.java:482) 
	at javax.swing.JComponent.getPreferredSize(JComponent.java:1272) 
	at javax.swing.ViewportLayout.layoutContainer(ViewportLayout.java:120) 
	at java.awt.Container.layout(Container.java:1017) 
	at java.awt.Container.doLayout(Container.java:1007) 
	at java.awt.Container.validateTree(Container.java:1089) 
	at java.awt.Container.validateTree(Container.java:1096) 
	at java.awt.Container.validate(Container.java:1064) 
	at javax.swing.RepaintManager.validateInvalidComponents(RepaintManager.java:353) 
	at javax.swing.SystemEventQueueUtilities$ComponentWorkRequest.run(SystemEventQueueUtilities.java:116) 
	at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:178) 
	at java.awt.EventQueue.dispatchEvent(EventQueue.java:448) 
	at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:197) 
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150) 
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:144) 
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:136) 
	at java.awt.EventDispatchThread.run(EventDispatchThread.java:99)
 
S

SlaterB

Gast
da wird spaltenNr 7 abgefragt, aber nur 2 Elemente im Vector, ist doch deutlich zu lesen?
wie viele Spalten soll denn deine Tabelle haben?
 

AlArenal

Top Contributor
Was ist daran unklar?
Offensichtlich versuchst du auf Elemente in deinem Vector zuzugreifen, die es nicht gibt. Entweder entfernst du diese nachdem du das Model der JTable zugewiesen hast, ohne die korrekten Events abzufeiern, oder du lieferst eine falsche hartkodierte Anzahl Zeilen, oder oder oder....

Den interessanten Teil des Model-Codes hast du ja leider unterschlagen ;)
 

Dana

Aktives Mitglied
Die Tabelle sollte 8 spalten haben. Das ist meine TestTableModel
Code:
public class TestTableModel extends AbstractTableModel
{
// Instanzvariablen für den Datenbestand
  public Vector daten = new Vector();
  public Vector datenAlt = null;

// Instanzvariable für die Spaltennamen und Datentypen
  public Object[] spaltenNamen = {""};
  public Object[] spaltenTypen = {""};

// Instanzvariable für den Tabellennamen
  protected String tabellenname = "";

// Instanzvariable für die SQL-Abfrage
  protected String SQLstmt;

  // Threadobjekt anlegen zur Abfrage der Datenbank
  public TestTableData tdThread;

  // MyTable muss übergeben werden um variable Spaltenbreiten zu ermöglichen
  private TestTable myTable = null;

  public TestTableModel()
  {
    // leerer Konstruktor
  }

  // Konstruktor bei dem MyTable übergeben wird.
  public TestTableModel(TestTable myTable)
  {
    this.myTable = myTable;
  }


/** Methode mit der jeweils im Programm zu jedem Fenster in der auf die Datenbank
 *  zugegriffen wird, der Thread mit der Abfrage an die DB gestartet wird.
 *  Übergeben wird der SQL-Befehl dieser Abfrage.
 */
  public synchronized void StartThread(String SQLstmt)
  {
    this.SQLstmt = SQLstmt;

    // Thread starten, der die Daten für das Tabellenmodell liefert und
    // der diese Daten ständig aktualisiert
    tdThread = new TestTableData(this, SQLstmt, myTable);
    tdThread.start();
  }

  // Gibt die SpaltenAnzahl der Tabelle zurueck
  public int getColumnCount()
  {
    return spaltenNamen.length;
  }

  // Gibt die ZeilenAnzahl der Tabelle zurueck
  public int getRowCount()
  {
    return daten.size();
  }
  // Gibt das Objekt aus der jeweiligen Zelle der Tabelle zurueck
public Object getValueAt(int zeileNr, int spalteNr)
{
 Vector zeile = (Vector)daten.elementAt(zeileNr);

 Object s = zeile.elementAt(spalteNr);
 String st = s.toString();
      if (st.equals("true"))
        return Boolean.TRUE;
      else if (st.equals("false"))
        return Boolean.FALSE;
      else return s;

// return zeile.elementAt(spalteNr);
}




// Setzt die Werte für eine Zelle der Tabelle
  public void setValueAt(Object obj, int zeileNr, int spalteNr)
  {
// threadsichere Methode zum Schreiben von Daten in die Tabelle!
    fireTableCellUpdated(zeileNr, spalteNr);
  }

// Gibt die Beschriftung einer Spalte der Tabelle zurück
  public String getColumnName(int spalteNr)
  {
    return (String)spaltenNamen[spalteNr];
  }

// Gibt den Datentyp einer Spalte der Tabelle zurück
  public Class getColumnClass(int spalteNr)
  {
      return getValueAt(0, spalteNr).getClass();
  }

// Setzt den Editiermodus fuer eine Zelle
  public boolean isCellEditable(int zeileNr, int spalteNr)
  {
    return false;
  }
}

/**
   Dieses Tabellenmodell übernimmt ein vorhandenes Tabellenmodell
   und produziert ein neues Modell, das die Zeilen sortiert, sodass
   die Einträge in einer bestimmten Spalte sortiert werden.
*/
class SortFilterModel extends AbstractTableModel
{
   private TableModel model;
   private int sortColumn;
   private Row[] rows;
   /**
      Konstruiert ein Sortierfiltermodell.
      @param m Zu filterndes Tabellenmodell
   */
   public SortFilterModel(TableModel m)
   {
      model = m;
      rows = new Row[model.getRowCount()];
      for (int i = 0; i < rows.length; i++)
      {
         rows[i] = new Row();
         rows[i].index = i;
      }
   }

 /**
    Sortiert die Zeilen.
    @param c Zu sortierende Spalte
 */
   public void sort(int c)
   {
      sortColumn = c;
      Arrays.sort(rows);
      fireTableDataChanged();
   }

 // Die verschobene Zeile für die drei Methoden berechnen, die
 // auf Modellelemente zugreifen. Müssen deklariert werden.
   public Object getValueAt(int r, int c)
   {
      return model.getValueAt(rows[r].index, c);
   }


   public void setValueAt(Object aValue, int r, int c)
   {
      model.setValueAt(aValue, rows[r].index, c);
   }

// Alle übrigen Methoden müssen auch an das Modell delegiert werden.
   public int getRowCount()
   {
      return model.getRowCount();
   }

   public int getColumnCount()
   {
      return model.getColumnCount();
   }

   public String getColumnName(int c)
   {
      return model.getColumnName(c);
   }

   public Class getColumnClass(int c)
   {
      return model.getColumnClass(c);
   }

 /**
    Diese innere Klasse nimmt den Index der Modellzeile
    auf. Zeilen werden verglichen, indem die Einträge der
    Modellzeilen in der Sortierspalte betrachtet werden.
 */
   private class Row implements Comparable
   {
      public int index;
      public int compareTo(Object other)
      {
         Row otherRow = (Row)other;
         Object a = model.getValueAt(index, sortColumn);
         Object b = model.getValueAt(otherRow.index, sortColumn);
         if (a instanceof Comparable)
            return ((Comparable)a).compareTo(b);
         else
            return a.toString().compareTo(b.toString());
      }
   }
}
 

AlArenal

Top Contributor
Dein Model ist aber leer.

Die Tatsache, dass du deinen Daten-Vecotr public deklarierst, lässt mich vermuten, dass du muckefuck betreibst und von außen über direkten Zugriff auf den Vector Objekte hinzufügst und entfernst, nachdem du das Model an eine Table übergeben hast.

Da bleibt nur:
Basics lesen und zurück ans Reißbrett ;)
 
G

Guest

Gast
Das mache ich aber nicht ich füge wider Objekte noch entferne ich sie
 
G

Guest

Gast
Ich habe gemerkt, dass die Fehlermeldung meistens kommt wenn ich die Tabelle scrolle
 
S

SlaterB

Gast
da ist kein Fehler, du hast einfach einen
Vector zeile = (Vector)daten.elementAt(zeileNr);
der nur zwei Felder enthält,
ist doch klar, dass das nicht hinhaut..

schaue dir alle deine Vectoren an und korrigiere sie,
oder sorge bei getValueAt dafür, dass notfalls ein anderer Default-Wert zurückgegeben wird
 

AlArenal

Top Contributor
An irgendeiner Stelle muss aber entweder #getRowCount einen zu großen Wert liefern, oder aber Datensätze werden entfernt.

JTable stellt schließlich keine Vermutungen an wieviele Datensätze das Model enthält...
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
N Fehler Inhalt von JTable wird gelöscht AWT, Swing, JavaFX & SWT 5
E Swing Fehler nach Befüllen einer JTable mit gesetzem Rowsort?! AWT, Swing, JavaFX & SWT 10
P Swing Misteriöser Fehler JTable AWT, Swing, JavaFX & SWT 5
hdi Swing JTable: Fehler beim Nutzen von RowSorter#setRowFilter AWT, Swing, JavaFX & SWT 4
P finde den Fehler im JTable nicht AWT, Swing, JavaFX & SWT 2
S JavaFX Fehler bei ImageView, Invalid URL AWT, Swing, JavaFX & SWT 6
hannibalstgt Fehler bei JCOMBOBOX GUI Anzeige AWT, Swing, JavaFX & SWT 4
J Fehler bei jFame.setTitle() AWT, Swing, JavaFX & SWT 8
thor_norsk SpringBoot-Fehler AWT, Swing, JavaFX & SWT 7
J Ich kriege eine Fehler Messesage bei meinem Media Player AWT, Swing, JavaFX & SWT 8
H Fehler: Zum Ausführen dieser Anwendung benötigte JavaFX-Runtime-Komponenten fehlen AWT, Swing, JavaFX & SWT 44
S Fehler beim Öffnen weiterer FXML AWT, Swing, JavaFX & SWT 11
S JavaFX Fehler zwischen View und Controller bei MouseEvent (MVC) AWT, Swing, JavaFX & SWT 13
T ListView nach Erweiterung Fehler in CellFactory AWT, Swing, JavaFX & SWT 8
beli3ver JavaFX Anwendung startet nicht, kann den Fehler nicht finden (Exception in Application start method) AWT, Swing, JavaFX & SWT 1
J "Exception in thread "AWT-EventQueue-0"" Fehler AWT, Swing, JavaFX & SWT 3
parrot JavaFX Fehler AWT, Swing, JavaFX & SWT 4
H JavaFX JavaFX Import Fehler AWT, Swing, JavaFX & SWT 4
T Anderen Java Code durch Code kompilieren und Fehler in Label ausgeben AWT, Swing, JavaFX & SWT 5
M AWT Kann meinen Fehler beim ActionListener nicht finden AWT, Swing, JavaFX & SWT 5
Z Swing Wert aus Textfeld auslesen -- null Fehler AWT, Swing, JavaFX & SWT 4
A eine Fehler AWT, Swing, JavaFX & SWT 9
A Fehler beim Hintergrund AWT, Swing, JavaFX & SWT 17
L JavaFX Fehler beim setzen von Farben AWT, Swing, JavaFX & SWT 16
B JavaFX Text wird nicht angezeigt, kein Fehler AWT, Swing, JavaFX & SWT 2
W fillRect() in Schleife spukt nur Fehler aus AWT, Swing, JavaFX & SWT 3
S Fehler: Hauptklasse neon.Main konnte nicht gefunden oder geladen werden AWT, Swing, JavaFX & SWT 5
Tronert JavaFX Fehler beim Ändern der font-weight AWT, Swing, JavaFX & SWT 7
Tommy135 JavaFX JavaFX Fehler beim Scenewechsel AWT, Swing, JavaFX & SWT 23
V JavaFX Button Controller Fehler, trotz Erfolg in einem anderem Code? AWT, Swing, JavaFX & SWT 7
E Fehler bei Button AWT, Swing, JavaFX & SWT 1
L Unbekannter Fehler AWT, Swing, JavaFX & SWT 13
H JavaFX Kriege fehler beim Fenster wechseln AWT, Swing, JavaFX & SWT 7
I Fehler bei Alert AWT, Swing, JavaFX & SWT 6
J Fehler bei PixelColor erkennung AWT, Swing, JavaFX & SWT 4
T Fehler bei ActionEvent? AWT, Swing, JavaFX & SWT 3
V Fehler bei Würfelsimulator GUI AWT, Swing, JavaFX & SWT 2
Z GUI-Problem, finde meinen Fehler nicht! AWT, Swing, JavaFX & SWT 11
Seikuassi SWING - (Hoffentlicher) simpler Color-Fehler AWT, Swing, JavaFX & SWT 4
M Swing finde den fehler nicht AWT, Swing, JavaFX & SWT 9
A Fehler bei erstellen eines JTextFields AWT, Swing, JavaFX & SWT 2
D Unlogischer Fehler? AWT, Swing, JavaFX & SWT 2
L Eclipse Fehler besser zu verstehen!!! AWT, Swing, JavaFX & SWT 4
E Warum macht die einfache Animation einen kleinen Fehler? AWT, Swing, JavaFX & SWT 14
bluerob Fehler bei Wertübermittlung über KeyListener AWT, Swing, JavaFX & SWT 3
H GUI-Textausgabe Fehler AWT, Swing, JavaFX & SWT 5
S String is null Fehler AWT, Swing, JavaFX & SWT 2
P Swing GroupLayout() Fehler? AWT, Swing, JavaFX & SWT 3
J JMenuBar ist geaddet, aber nicht im Frame. Wo ist der Fehler? (inkl. Code) AWT, Swing, JavaFX & SWT 2
N Touchscreen-Scrollen, wo liegt der Fehler? AWT, Swing, JavaFX & SWT 3
S Fehler beim Zweites 3D Bild AWT, Swing, JavaFX & SWT 2
L Fehler beim erstellen einer Tabelle mithilfe von 2d-Array AWT, Swing, JavaFX & SWT 3
M GEF tutorial Fehler finden AWT, Swing, JavaFX & SWT 4
S Grafik Fehler AWT, Swing, JavaFX & SWT 15
M Fehler bei Arrayübergabe an JComboBox AWT, Swing, JavaFX & SWT 10
J Fehler beim Einklappen eines Trees AWT, Swing, JavaFX & SWT 4
P 2D-Grafik Fehler beim Laden eines Bildes AWT, Swing, JavaFX & SWT 25
S LayoutManager Fehler gesucht 18.6.2011 AWT, Swing, JavaFX & SWT 4
C Fehler nur bei manchen Usern AWT, Swing, JavaFX & SWT 8
Screen Fehler bei Get-Methode für ArrayList AWT, Swing, JavaFX & SWT 8
K JFrame + KeyListener + Runnable = Fehler AWT, Swing, JavaFX & SWT 3
I Fehler bei JFileChooser AWT, Swing, JavaFX & SWT 2
K 2D-Grafik Fehler beim Farbe auslesen AWT, Swing, JavaFX & SWT 3
J Fehler beim Gif Datei öffnen AWT, Swing, JavaFX & SWT 2
J 2D-Grafik Fehler beim Überzeichnen von Linien AWT, Swing, JavaFX & SWT 11
Y Swing JPasswordField Fehler AWT, Swing, JavaFX & SWT 14
A Swing Unknown Source Fehler AWT, Swing, JavaFX & SWT 9
N Fehler bei Grouplayout AWT, Swing, JavaFX & SWT 17
S ActionPerformed Fehler... AWT, Swing, JavaFX & SWT 9
C BufferedImage-Fehler? Falsches Bild wir gezeichnet AWT, Swing, JavaFX & SWT 5
A Tabellen Überschriften ändern -setColumnIdentifiers()- Fehler AWT, Swing, JavaFX & SWT 7
M.F.G. Fehler bei der Anzeige Grafischer Elemente AWT, Swing, JavaFX & SWT 13
D Swing Verwirrender Fehler AWT, Swing, JavaFX & SWT 7
J Fehler in fillRoundRect AWT, Swing, JavaFX & SWT 2
D Probleme mit Spiel-Engine. Komische Fehler. AWT, Swing, JavaFX & SWT 5
W fehler jedoch ka wo AWT, Swing, JavaFX & SWT 14
F Fehler in der Startklasse AWT, Swing, JavaFX & SWT 13
A Fehler bei der Parametereingabe? AWT, Swing, JavaFX & SWT 16
Spin Fehler in Vergleich AWT, Swing, JavaFX & SWT 6
K Swing: ContentPane von JDialog ist transparent (Fehler) AWT, Swing, JavaFX & SWT 10
Dragonfire ZoomImage flackert -> Fehler: repaint-Aufruf [gelöst] AWT, Swing, JavaFX & SWT 5
T Invalid Range - Fehler bei TableRowSorter / Tabelle AWT, Swing, JavaFX & SWT 17
DasDogma Fehler bei getText() AWT, Swing, JavaFX & SWT 10
I Fehler bei verschachtelten JScrollPanes AWT, Swing, JavaFX & SWT 2
M Fehler beim Zugriff von awt-KeyListener auf swt-Shell AWT, Swing, JavaFX & SWT 2
GilbertGrape Fehler bei HTML in JTextPane AWT, Swing, JavaFX & SWT 2
K Textfelder auslesen gibt immer Fehler AWT, Swing, JavaFX & SWT 2
D Fehler bei Button Array AWT, Swing, JavaFX & SWT 8
P Fehler beim Einlesen eines JTextFields AWT, Swing, JavaFX & SWT 2
G Viele Fehler beim zeichen AWT, Swing, JavaFX & SWT 5
M Fehler mit Jigloo AWT, Swing, JavaFX & SWT 3
M setColor mit Fehler cannot fiend symbol (java.awt.Color) AWT, Swing, JavaFX & SWT 2
Z habe code, habe fehler, habe keine lösung AWT, Swing, JavaFX & SWT 7
R JComboBox Fehler AWT, Swing, JavaFX & SWT 7
B NPE-Fehler AWT, Swing, JavaFX & SWT 11
A Fehler beim Auslesen aus einem Textfeld AWT, Swing, JavaFX & SWT 2
P JRadioButton in Schleife erstellen > wo liegt mein Fehler AWT, Swing, JavaFX & SWT 2
R setIcon löst Fehler aus AWT, Swing, JavaFX & SWT 4
B Durch Auslesen der Zwischenablage folgt Fehler im Excel AWT, Swing, JavaFX & SWT 2
spacegaier Fehler beim Aufrufen von Dialog aus ActionListener AWT, Swing, JavaFX & SWT 12

Ähnliche Java Themen


Oben