JTable Selection Listener funktioniert nicht

julianpe

Aktives Mitglied
Hallo,

ich habe mir ein Fenster erstellt, in dem neben ein paar Textfeldern und Button, auch eine JTable mit Daten aus einer Datenbank angezeigt werden.

Nun würde ich gerne einen SelectionListener implementieren. Ziel ist es, die ID des aktuell selektierten Datensatzes herauszubekommen und weitere Funktionen damit ausführen.

Momentan sieht die Behandlung der JTable wie folgt aus (in einer Funktion ausgelagert):
Java:
public void updateServiceList(){
       
        Vector<Vector<String>> VecServiceData = new Vector<Vector<String>>();

        String StrEventID = Integer.toString(iEventID);
        DBHandler dbH = new DBHandler();

       

            
        // Ergebnis der Datenbankabfrage wird in Vector geschrieben
         VecServiceData = dbH.getServiceOverview(StrEventID);
       
        // Tabellenmodell auf Basis des DefaultTableModel
        servmodel = new ServicesModel(VecServiceData, Settings.getServiceColumnNames());
             sorterServices = new TableRowSorter<DefaultTableModel>(servmodel);
             serviceTable.setModel(servmodel);   
            
             // Tabellengrundgerüst erstellen
             tableService = new JTable(servmodel);
             tableService.setSelectionBackground(Color.darkGray);
             tableService.setAutoCreateRowSorter(true);
             tableService.setBorder(null);
             tableService.setAutoResizeMode(JTable.AUTO_RESIZE_ALL_COLUMNS);
             tableService.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
             tableService.setRowSorter(sorterServices);
             tableService.removeColumn(tableService.getColumnModel().getColumn(0));
            
            
             // Ergebnisse der Datenbankabfrage werden mit Spaltenüberschrift in Tabelle geschrieben
            // Nun die JTable in ScrollPane einfügen
             scrollPaneServices.setViewportView(tableService);
            
            
        
            
            
             // Tabelle neu zeichnen
             servmodel.fireTableDataChanged();
       
       
            // Selection Listener aktivieren
             tableService.getSelectionModel().addListSelectionListener( new ListSelectionListener()
             {
                 public void valueChanged(ListSelectionEvent e)
                 {
                     System.out.println("Angeklickt!");
                 }
             });
     
    }

Beim Ausführen wird jedoch niemals die Zeile "Angeklickt" ausgegeben.
Das heißt der SelectionListener wird nicht korrekt im Programm "angemeldet"? und reagiert nicht auf die Benutzereingaben/Mausklick

Hat jemand eine Idee wo es noch hapert?

Danke und Gruß
 
Java:
             System.out.println("Versuche Selection Listener zu starten");
             tableService.getSelectionModel().addListSelectionListener( new ListSelectionListener()
             {
                 public void valueChanged(ListSelectionEvent e)
                 {
                     System.out.println("Angeklickt!");
                 }
             });

Das System.out.println wird aufgerufen. Eine Exception fliegt danach nicht - wo kann anderweitig hapern?
 
An dem Code aus Post #3 liegt es wohl nicht. Zu dem Rest kann man nicht allzu viel sagen. Vielleicht kannst du das mal auf ein kompilierbares Beispiel reduzieren.
Bist du denn sicher, dass die angezeigte Tabelle überhaupt tableService ist? Es scheint ja zumindest noch serviceTable zu geben. Vielleicht klickst du ja auf die.
 
An dem Code aus Post #3 liegt es wohl nicht. Zu dem Rest kann man nicht allzu viel sagen. Vielleicht kannst du das mal auf ein kompilierbares Beispiel reduzieren.
Bist du denn sicher, dass die angezeigte Tabelle überhaupt tableService ist? Es scheint ja zumindest noch serviceTable zu geben. Vielleicht klickst du ja auf die.
Du hast vollkommen Recht - habe seinerzeit mit unterschiedlichen Instanzen hin und her probiert. Das scheint noch ein funktionsloses Relikt zu sein. Habe mal alles auf eine Instanz gemünzt - klappt jetzt wie erwartet.
Vielen Dank!
 

Neue Themen


Zurück
Oben