Hallöchen!
Hm, ich hoffe ich bekomme mein Problem verständlich erklärt...
Ich habe mir ein Table Model gebsatelt, das sieht so aus:
Sodelle, wie man sieht holt sich die Tabelle die Daten für die Zellen aus zwei ArrayLists, die vorher aus zwei Dateien befüllt werden.
Die Anzahl der Zeilen bestimmt zur Zeit die Größe einer der beiden ArrayLists.
Soweit, so gut.
Wenn beide Dateien gleich groß sind (also gleichviele Zeilen haben) läuft das ja wunderbar.
Aber (und gerade das ist es, was ja das Programm prüfen soll unter Anderem) wenn eine Datei mehr Zeilen (in diesem Fall einen oder mehr Parameter) enthält, ist ja zum Beispiel die Größe von paras nicht gleich der von Vorlagenparas.
In dem Fall bekomme ich eine java.lang.IndexOutOfBoundsException, da ja die Tabelle versucht, die Zeilen in der Spalte mit Inhalt aus VorlageParas zu befüllen.
Nun stellt sich mir die Frage, wie ich dem entgegenwirke.
Angezeigt bekommen muss ich ja, dass eine Datei mehr Parameter enthält, als die andere, dass ich diese dann in der Tabelle editieren kann (zudem wird mir halt gezeigt, dass Werte nicht übereinstimmen, diese muss ich dann auch ändern).
Ich hab nun vieles versucht, aber verzweifel langsam...
Wenn ihr mehr Code braucht, sagt bescheid
PS: Die Methode setValueAt bitte ich zu vernachlässigen
Gruß
Myar
Hm, ich hoffe ich bekomme mein Problem verständlich erklärt...
Ich habe mir ein Table Model gebsatelt, das sieht so aus:
Code:
package Programmieraufgabe;
import java.util.ArrayList;
import javax.swing.table.AbstractTableModel;
public class MyTableModel2 extends AbstractTableModel{
private static final long serialVersionUID = 16092;
ArrayList<Parameter> paras;
ArrayList<Parameter> VorlagenParas;
//static int w = 0;
//static int c = 0;
public MyTableModel2(ArrayList<Parameter> paras, ArrayList<Parameter> VorlagenParas) {
this.paras= paras;
this.VorlagenParas= VorlagenParas;
}
public int getRowCount() {
if (paras == null)
return 0;
else return paras.size();
}
public int getColumnCount() {
return 5;
}
public String getColumnName(int columnindex){
if(columnindex == 0)
return "ParameterName";
if(columnindex == 1)
return "Wert aus Datei";
if(columnindex == 2)
return "ParameterName";
if(columnindex == 3)
return "Wert aus Vorlage";
else
return "Meldung";
}
public boolean isCellEditable(int rowIndex, int columnIndex) {
return true;
}
public Object getValueAt(int rowIndex, int columnIndex) {
if (columnIndex == 0)
return paras.get(rowIndex).getParameterName();
if (columnIndex == 1)
return paras.get(rowIndex).getParameterWert();
if (columnIndex == 2)
return VorlagenParas.get(rowIndex).getParameterName();
if (columnIndex == 3)
return VorlagenParas.get(rowIndex).getParameterWert();
else
return "";
}
/* public void setValueAt(Object eintrag, int row, int column) {
w = row;
c = column;
switch(column){
case 0 : one.set(row, eintrag); // Ersetz den Eintrag an der Stelle "row"
break;
case 1 : one2.set(row, eintrag); // Ersetz den Eintrag an der Stelle "row"
break;
case 2 : two.set(row, eintrag); // Ersetz den Eintrag an der Stelle "row"
break;
case 3 : two2.set(row, eintrag); // Ersetz den Eintrag an der Stelle "row"
break;
}
this.fireTableDataChanged();
}*/
}
Sodelle, wie man sieht holt sich die Tabelle die Daten für die Zellen aus zwei ArrayLists, die vorher aus zwei Dateien befüllt werden.
Die Anzahl der Zeilen bestimmt zur Zeit die Größe einer der beiden ArrayLists.
Soweit, so gut.
Wenn beide Dateien gleich groß sind (also gleichviele Zeilen haben) läuft das ja wunderbar.
Aber (und gerade das ist es, was ja das Programm prüfen soll unter Anderem) wenn eine Datei mehr Zeilen (in diesem Fall einen oder mehr Parameter) enthält, ist ja zum Beispiel die Größe von paras nicht gleich der von Vorlagenparas.
In dem Fall bekomme ich eine java.lang.IndexOutOfBoundsException, da ja die Tabelle versucht, die Zeilen in der Spalte mit Inhalt aus VorlageParas zu befüllen.
Nun stellt sich mir die Frage, wie ich dem entgegenwirke.
Angezeigt bekommen muss ich ja, dass eine Datei mehr Parameter enthält, als die andere, dass ich diese dann in der Tabelle editieren kann (zudem wird mir halt gezeigt, dass Werte nicht übereinstimmen, diese muss ich dann auch ändern).
Ich hab nun vieles versucht, aber verzweifel langsam...
Wenn ihr mehr Code braucht, sagt bescheid
PS: Die Methode setValueAt bitte ich zu vernachlässigen
Gruß
Myar