Anzeige:
Ergebnis 1 bis 4 von 4

Thema: ActionListener in JTable?

  1. #1
    Registrierter Benutzer Avatar von mwanaheri
    Registriert seit
    28.10.2003
    Ort
    Bayreuth
    Beiträge
    569

    ActionListener in JTable?

    Ich habe folgendes Problem:
    In einem Dialogfenster wird eine Tablle angeboten, aus der der Nutzer eine Zeile auswählen soll, aus der dann der Rückgabewert des Dialoges kommt. Die "natürliche" Erwartung ist nun, dass nach Auswahl einer Zeile ein <return> den Dialog schließt und den Wert übergibt. Leuchtet mir ein. Mein Problem dabei:
    weder das ScrollPane, noch die JTable, noch das TableModel lassen einen ActionListener zu.
    Hat jemand eine andere Perspektive für den Ochs vorm Berge?
    Das Ziel ist das Ziel.

  2. #2
    Registrierter Benutzer Avatar von Caveman
    Registriert seit
    03.11.2005
    Ort
    Geilsheim
    Beiträge
    308
    Von was wird das Daten-Model abgeleitet?
    Von TableModel oder von AbstractTableModel?

    Die Informationen sind etwas wenig!
    Programmiere (wenn es denn mal wieder vorkommt) in C, C++, Java, Perl
    Bin kein Student (Elektrotechnik) mehr und habe die Seiten gewechselt von der Software weg hin zur Hardware

  3. #3
    Registrierter Benutzer
    Registriert seit
    17.11.2005
    Beiträge
    47
    Vielleicht hilft Dir folgende Passage aus dem Javabuch von Krüger:
    Eine JTable generiert eine Vielzahl von Ereignissen, um registrierte Listener über Änderungen des Tabellenzustands zu informieren. Will ein Objekt beispielsweise darüber informiert werden, daß sich die Selektion geändert hat, muß es zwei ListSelectionListener registrieren. Einer davon wird auf dem Selektionsmodell registriert, das mit getSelectionModel ermittelt werden kann. Da dieser nur Informationen über Änderungen an der Zeilenselektion versendet, muß ein zweiter Listener auf dem Modell für die Spaltenselektion registriert werden. Es kann durch Aufruf von getColumnModel beschafft werden, und auf sein Selektionsmodell kann ebenfalls mit getSelectionModel zugegriffen werden. Bei jeder Änderung der Selektion wird nun valueChanged aufgerufen und kann mit Hilfe der oben erläuterten Methoden herausfinden, welche Zeilen und Spalten selektiert sind.
    Wie ich Dich verstanden habe, ist die Spalte für Dich irrelevant. Dann sollte es nicht allzu kompliziert sein.

  4. #4
    Registrierter Benutzer Avatar von mwanaheri
    Registriert seit
    28.10.2003
    Ort
    Bayreuth
    Beiträge
    569
    @ Caveman
    Das Tabellenmodell ist von AbstractTableModel abgeleitet.
    Stimmt schon, die Informationen waren reichlich dünn. Ich bin im Moment bei der Nutzerperspektive und daher gedanklich dem Quellcode etwas entrückt. Sorry.

    @ McFraggle
    Ja, offenbar werden eine Menge Ereignisse ausgelöst. Allerdings beziehen die sich meistens auf den Tabellenzustand. Ein ActionListener ist halt nicht unterzubringen.

    Im Moment habe ich mir mit einem KeyListener beholfen, der den Keycode abfragt und eben auf Enter reagiert. Zwar brauche ich den KeyListener ohnehin für den Dialog, in der Tabelle <Enter> damit abzufangen finde ich allerdings etwas unelegant. Das könnte später die Wartung etwas erschweren wenn ich das gleiche Ereignis in zwei unterschiedlichen Handlern bearbeiten muss.
    Lieber wäre es mir, ich könnte die Tabelle (oder das Tabellenmodell) dazu bewegen, ein ActionEvent abzufeuern, damit ich die Action-Behandlung einheitlich habe.

    Einstweilen schon mal vielen Dank euch Beiden.
    Das Ziel ist das Ziel.

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •