G
Gelöschtes Mitglied 9226
Gast
Hallo,
ich habe Probleme mit meiner Tabelle. Wenn ich die ersten 3 Spalten anklicke, bekomme ich die Daten sauber in meine zugehörigen Textfelder übertragen. Klicke ich aber Spalte 4 oder 5 an, bekommen ich "ArrayIndexOutOfBoundsException". Ich habe mir das Tutorial schon angesehen, kann aber keinen Fehler in meiner Programmierung finden. Kann mir jemand helfen???
Hier der relevante Quellcode:
ich habe Probleme mit meiner Tabelle. Wenn ich die ersten 3 Spalten anklicke, bekomme ich die Daten sauber in meine zugehörigen Textfelder übertragen. Klicke ich aber Spalte 4 oder 5 an, bekommen ich "ArrayIndexOutOfBoundsException". Ich habe mir das Tutorial schon angesehen, kann aber keinen Fehler in meiner Programmierung finden. Kann mir jemand helfen???
Hier der relevante Quellcode:
Code:
import javax.swing.JScrollPane;
import javax.swing.table.JTableHeader;
import javax.swing.table.DefaultTableModel;
import javax.swing.JTable;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
private static JTable tabMain;
private static DefaultTableModel defaultTableModel;
private static JScrollPane scpMain;
tabMain = new JTable();
defaultTableModel = new DefaultTableModel();
scpMain = new JScrollPane();
// verhindern, dass Spalten vertauscht werden koennen
JTableHeader tableHeader = tabMain.getTableHeader();
tableHeader.setResizingAllowed(false);
tableHeader.setReorderingAllowed(false);
tabMain.getSelectionModel().addListSelectionListener(new SelectionListener(tabMain));
tabMain.getColumnModel().getSelectionModel().addListSelectionListener(new SelectionListener(tabMain));
tabMain.addKeyListener(new myTabKeyListener());
scpMain.setVerticalScrollBarPolicy(javax.swing.ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
scpMain.setBounds(10, 70, 470, 250);
scpMain.setViewportView(tabMain);
private void tabMainSelectionPerformed (ListSelectionEvent e){
// angeklickete Zeile in Tabelle auf Textfelder uebertragen
int row = tabMain.getSelectedRow();
if (row > -1){
routerGroupID = tabMain.getValueAt(row,0).toString();
txtRouterGroupName.setText(tabMain.getValueAt(row,1).toString());
txtRouterGroupDescription.setText(tabMain.getValueAt(row,2).toString());
butSave.setEnabled(true);
butSave.setText("Aendern");
butDelete.setEnabled(true);
}
}
class SelectionListener implements ListSelectionListener {
JTable table;
SelectionListener(JTable table) {
this.table = table;
}
public void valueChanged(ListSelectionEvent e) {
if (e.getValueIsAdjusting() == true){
tabMainSelectionPerformed(e);
}
}
}
private void refreshTabMain(){
// Tabelle neu initialisieren
String myBuffer[][] = ServerData.getServerList();
int to = GF.getSizeOfStringArray(myBuffer)-1;
// sortierte Liste holen
String[][] buffer = Sort.sortStringDoubleColumned(myBuffer, 0, to, 1, 5, true); //eigene Sortier-Funktion
int i = 0;
int m = to; // Groesse des Arrays buffer
defaultTableModel = new DefaultTableModel(getColumns(),0){
boolean[] canEdit = new boolean [] {
false, false, false
};
public boolean isCellEditable(int rowIndex, int columnIndex) {
return canEdit [columnIndex];
}
};
tabMain.setModel(defaultTableModel);
tabMain.setGridColor(Color.lightGray);
// Daten in Tabelle einfuegen (Zeile fuer Zeile)
while(i <= m){
String[] data = new String[]{buffer[0][i], buffer[1][i], buffer[2][i], buffer[3][i], buffer[4][i]};
defaultTableModel.addRow(data);
i++;
}
// Anzahl der Listeneintraege Anzeigen
int j = tabMain.getModel().getRowCount();
instance.showTableSize(j);
}
private String[] getColumns(){
String[] columns = new String[]{"Server-ID", "Server-IP-Adresse", "Server-Name", "Server-Prompt",
"F.beschreibung"};
return columns;
}