Hallo,
ich habe in einem JPanel eine JTable mit mehren Spalten sowie einen "Speichern"-Knopf.
Meine Zellen-Validierung erfolgt in einem eigenen CellEditor welche bei Fehleingabe das betroffene Feld umrandet, eine Fehlermeldung ausgibt und den User nicht aus dem Feld läßt.
Wenn ich nun aber z.B. 2 meiner Spalten korrekt befuelle, die anderen (Pflicht)Spalten aber gar nicht erst editiere, sondern sofort auf "Speichern" klicke, stelle ich zwar beim durchlaufen im Controller des Models der View fest, das weitere Pflichtspalten leer sind, weiss aber nicht wie ich das gescheit dem User anzeigen soll.
Ich wuerde nun gerne aus meinem Controller heraus beim feststellen des Fehlers genauso wie in meinem CellEditor in das Feld springen, es rot umranden und die Fehlermeldung ausgeben.
Ich habe dazu in meiner View folgende Funktion erzeugt:
Dadurch möchte ich erreichen, das ich in die vom Controller festgestellte fehlerhafte Zelle springe, in den Editor-Modus gehe und Ihn sofort danach wieder verlasse um die im CellEditor hinterlegten Validierungen auszuführen (welche dann Alarm schlagen).
Soweit so gut (hoffe ich ). Es scheint jedenfalls zu funktionieren.
Aber - wenn ich nun als Anwender die Spalten meiner Tabelle verschiebe - wie kann ich dann die Spaltennummer rausfinden? Ich habe in meinem TableModel Konstanten für den Spaltenindex definiert. Vom aktuellen Spalten-Index zu dem aus dem Table Model zu kommen ist recht einfach:
nur - wie geht es anders herum? also ich habe den ModelIndex, will aber den ColumnIndex der Tabelle rausfinden? Über den Spaltennamen zu suchen oder mit einem loop alle durchzulaufen find ich nicht so prickelnd.
ich habe in einem JPanel eine JTable mit mehren Spalten sowie einen "Speichern"-Knopf.
Meine Zellen-Validierung erfolgt in einem eigenen CellEditor welche bei Fehleingabe das betroffene Feld umrandet, eine Fehlermeldung ausgibt und den User nicht aus dem Feld läßt.
Wenn ich nun aber z.B. 2 meiner Spalten korrekt befuelle, die anderen (Pflicht)Spalten aber gar nicht erst editiere, sondern sofort auf "Speichern" klicke, stelle ich zwar beim durchlaufen im Controller des Models der View fest, das weitere Pflichtspalten leer sind, weiss aber nicht wie ich das gescheit dem User anzeigen soll.
Ich wuerde nun gerne aus meinem Controller heraus beim feststellen des Fehlers genauso wie in meinem CellEditor in das Feld springen, es rot umranden und die Fehlermeldung ausgeben.
Ich habe dazu in meiner View folgende Funktion erzeugt:
Java:
public void errorCell(int row, int col) {
table.editCellAt(row, col);
table.getCellEditor().stopCellEditing();
}
Dadurch möchte ich erreichen, das ich in die vom Controller festgestellte fehlerhafte Zelle springe, in den Editor-Modus gehe und Ihn sofort danach wieder verlasse um die im CellEditor hinterlegten Validierungen auszuführen (welche dann Alarm schlagen).
Soweit so gut (hoffe ich ). Es scheint jedenfalls zu funktionieren.
Aber - wenn ich nun als Anwender die Spalten meiner Tabelle verschiebe - wie kann ich dann die Spaltennummer rausfinden? Ich habe in meinem TableModel Konstanten für den Spaltenindex definiert. Vom aktuellen Spalten-Index zu dem aus dem Table Model zu kommen ist recht einfach:
Java:
table.getColumnModel().getColumn(c).getModelIndex()
nur - wie geht es anders herum? also ich habe den ModelIndex, will aber den ColumnIndex der Tabelle rausfinden? Über den Spaltennamen zu suchen oder mit einem loop alle durchzulaufen find ich nicht so prickelnd.
Zuletzt bearbeitet: