Hallo,
danke, das hat wunderbar geklappt. Ich hätte allerdings noch eine weitere Frage, die auch gleich dazu passt:
Ich habe für meine Tabelle ein eigenes Model geschrieben, das von DefaultTableModel erbt.
import java.util.regex.Pattern;
import javax.swing.table.DefaultTableModel;
public class TelefonTableModel extends DefaultTableModel {
@Override
public void setValueAt(Object aValue, int row, int column) {
String wert = aValue.toString().trim();
if (column == 0 && Pattern.matches("^\\+?\\d+?", wert) )
super.setValueAt(aValue, row, column);
else if (column == 1)
super.setValueAt(aValue, row, column);
else
super.setValueAt("", row, column);
}
}
Die überschriebene setValueAt-Methode wird richtig aufgerufen, nur weiß ich dummerweise nicht wo sie aufgerufen wird? In meiner GUI-Klasse implementiere ich den TableModelListener und die dazu gehörenden Methode
public void tableChanged(TableModelEvent e) {
}
..nur steht in dieser Methode der setValueAt gar nicht, aber dennoch werden die Daten gehalten und auch der reguläre Ausdruck wird richtig angewendet, was mich zu dem Schluss bringt, dass die Methode intern abgerufen wird.
Mein Problem ist aber, dass ich bei falscher Eingabe eine Exception werfen will, aber wenn ich die Methode nicht "per Hand" aufrufe, wie kann ich dann die Exception fangen?
Markus