lina: JTable Problem

hallo :)
Ich habe ein kleines Problem mit ner JTable.
Nachdem die Werte vom Anwender eingetragen wurden, sollen diese per Klick auf einen Button übernommen werden (mit getValueAt(i,j) in einer doppelten schleife). Dies funktioniert bis zur letzen Zelle einwandfrei! Leider musste ich feststellen, dass die letzte Zelle noch den "Editierfocus" enthaelt und diese daher in der Schleife nicht berücksichtigt wird. Klickt der Anwender vor dem Buttonklick irgendwoanders hin, verschwindet dieser Focus(klar) und das Einlesen der Werte funktioniert wie gewünscht. Nun zu meiner Frage: weiss jemand eine Funktion mit der ich diesen Focus automatisch entfernen kann? Hab leider noch nichts passendes gefunden :(

liebe Gruesse
lina

  1. Hi,

    die Methoden die du suchst heissen
    -- removeColumnSelectionInterval(int index0, int index1)
    oder für die ganze zeile
    -- removeRowSelectionInterval(int index0, int index1)
    sind beides methoden von JTable.

    mfg

    1. die Methoden die du suchst heissen
      -- removeColumnSelectionInterval(int index0, int index1)
      oder für die ganze zeile
      -- removeRowSelectionInterval(int index0, int index1)

      hi :)
      Danke fuer die Antwort. Leider funktioniert es nicht so richtig. Vielleicht habe ich mich zu schwammig ausgedrückt. Es geht um diesen Focus der noch vom Editieren der Zeller stammt. Gerade habe ich gelesen, dass es eine Methode stopCellEditing gibt. dies ist allerdings keine Methode von JTable sondern von DefaultEditor (oder so ähnlich).
      Da verlassen mich dann meine Java-Kenntnisse ;) Kann mir vielleicht jemand sagen, wie ich die Tabelle dazu überredet kriege diese Methode zu benutzen? wenn ich einfach sage tabelle.stopCellEditing() krieg ich natuerlich cannot resolve symbol... *g* naja - probiern kann mans ja mal :)

      liebe Gruesse lina

      1. Hallo Lina,

        Gerade habe ich gelesen, dass es eine Methode stopCellEditing gibt. dies ist allerdings keine Methode von JTable sondern von DefaultEditor (oder so ähnlich).

        *g* von javax.swing.CellEditor

        Da verlassen mich dann meine Java-Kenntnisse ;) Kann mir vielleicht jemand sagen, wie ich die Tabelle dazu überredet kriege diese Methode zu benutzen? wenn ich einfach sage tabelle.stopCellEditing() krieg ich natuerlich cannot resolve symbol... *g* naja - probiern kann mans ja mal :)

        OOP:
        JTable tabelle hat eine Methode getCellEditor(). Diese liefert einen TableCellEditor. Dieser erbt von CellEditor die Methode stopCellEditing(). Das ganze darf natürlich nur aufgerufen werden, wenn auch gerade eine Zelle editiert wird. Um das zu prüfen hat die JTable tabelle eine Methode isEditing(). Also:

        if(tabelle.isEditing()) tabelle.getCellEditor().stopCellEditing();

        Das funktioniert aber nur, wenn alle Zellen den selben Editor verwenden.

        viele Grüße

        Axel

        1. Hi Axel :)

          if(tabelle.isEditing()) tabelle.getCellEditor().stopCellEditing();

          Ja - das hats getroffen :) Vielen vielen Dank!

          liebe Gruesse lina