Axel Richter: JTable - Zelle automatisch selektieren

Beitrag lesen

Hallo,

..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.

Ja und deshalb müsstest Du JTable erweitern, um hier so einzusteigen, wie Du Dir das vorstellst. Das würde ich aber nicht so machen.

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?

Du willst den Nutzer bei falscher Eingabe informieren und verhindern, dass falsche Werte in der Tabellenzelle überhaupt stehen können? Dann würde ich den Weg über den CellEditor gehen. Etwa so:

  
        table.getColumn("Name der Spalte").setCellEditor(  
          new DefaultCellEditor(new JTextField()) {  
            public boolean stopCellEditing() {  
              String wert = ((JTextField)getComponent()).getText().trim();  
              if (Pattern.matches("^\\+?\\d+?", wert)) {  
                 return super.stopCellEditing();  
              } else {  
                 System.out.println("Eingabeformat falsch!");  
                 return false;  
              }  
            }  
          }  
        );  

Falsche Eingaben werden nicht akzeptiert und man kommt erst aus dem Zelleditor-Modus, wenn man den Wert berichtigt hat.

Hier ist ein Beispiel verlinkt, welches das etwas Benutzerfreundlicher regelt.

viele Grüße

Axel