Zeilen zu einem DefaultTableModel hinzufügen

MarDaiBre

Aktives Mitglied
Hallo,

ich habe eine JTable 1, welche Daten enthält, die in eine weitere JTable 2 (in anderer Strukturierungsform) übertragen werden sollen. Eine Zeile der JTable 1 soll aufgeteilt werden und in JTable 2 in mehrere Zeilen übertragen werden.

Habe dazu folgenden Code geschrieben in Anlehnung an den Hinweis, eine Zeile dem DefaultTableModel hinzuzufügen:
Java:
table = db.baueTabelle(query);
					
DefaultTableModel model = new DefaultTableModel();
				
model.addColumn("A");
model.addColumn("B");
model.addColumn("V");
model.addColumn("F");
model.addColumn("G");
model.addColumn("H");
model.addColumn("T");
				
JTable tabelle = new JTable(model);
model = (DefaultTableModel) tabelle.getModel();
				
Vector<String> standardV = new Vector<String>();
String fehlerid = "0";
		        			
for(int u = 0; u < table.getRowCount(); u++)
{
		if(!fehlerid.equals(table.getValueAt(u, 0).toString()) || !fehlerid.equals("0"))
		{
			standardV.add("");
			standardV.add("");
			standardV.add("");
			standardV.add("");
			standardV.add("");
			standardV.add("");
			standardV.add("");
			model.addRow(standardV);
			standardV.clear();
						
			standardV.add("Fehlerortnummer");
			standardV.add("Bauteil");
			standardV.add("X-Koordinate");
			standardV.add("Y-Koordinate");
			standardV.add("Baureihe");
			standardV.add("Fehlerartnummer");
			standardV.add("Fehlerart");
			model.addRow(standardV);
			standardV.clear();
										
			for(int w = 1; w < 8; w++)
				standardV.add(table.getValueAt(u, w).toString());

			model.addRow(standardV);
			standardV.clear();
		}
					
		if(u > 3)
		{
			if(model.getValueAt(u-2, 0).toString().equals("Fehlerortnummer"))
			{
				standardV.add("Verursacherortnummer");
				standardV.add("Band");
				standardV.add("Station");
				standardV.add("Arbeitsplatz");
				standardV.add("Meisterei");
				standardV.add("Kostenstelle");
				standardV.add("");
				model.addRow(standardV);
				standardV.clear();
			}
		}
					
		for(int w = 8; w < 14; w++)
			standardV.add(table.getValueAt(u, w).toString());
					
		standardV.add("");
		model.addRow(standardV);
		standardV.clear();
		fehlerid = table.getValueAt(u, 0).toString();
}

Als Fehlermeldung bekomme ich jedoch:
Code:
Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: 0 >= 0
	at java.util.Vector.elementAt(Unknown Source)
	at javax.swing.table.DefaultTableModel.getValueAt(Unknown Source)
	at risikoverwaltung.view.AuswertungGUI.actionPerformed(AuswertungGUI.java:2129)
	at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)

Der Fehler tritt auf bei
Code:
if(model.getValueAt(u-2, 0).toString().equals("Fehlerortnummer"))
. Warum kann er denn auf model.getValueAt(u-2, 0) auf die Spalte 0 (oder auch 1, habe es bereits getestet) nicht zugreifen? Ich füge doch vorher schon Zeilen hinzu?

Vielen Dank schonmal.
 

Zurück
Oben