Anzahl von angeklickten Checkboxes zählen

lenzsi

Grünschnabel
Hi!

komme bei einer Sache nicht weiter, vielleicht weiß wer Rat:

Ich habe einen JTable, der zeigt Daten über eigenes TableModel an. In einer Spalte ist eine Checkbox( also case 4: return Boolean.class; im TableModel )

Die Daten in der Table sind Teilnehmer, die ich anklicke, wenn Sie da sind! jetzt würde ich gerne in einem Feld dynamisch anzeigen, wieviele checkboxes schon angeklickt sind?

kann mir da jemand weiterhelfen? funktioniert das mit Listenern?

danke, lg lenz
 
Hallo,

ist das Feld zur Anzeige eine Zelle der Tabelle oder ein JTextField ?

Unabhängig davon, wenn alles korrekt implementiert ist könntest
du dich als TableModelListener-Registrieren, und bei jeder Änderung
die auf true gesetzten booleans in deinem TableModel durchzälen und
den ermittelten Wert dann wohin auch immer weitergeben.

Gruß JAdix
 
hi!

danke für die schnelle antwort:

es ist eine zelle, deren class ich halt im getColumnClass mit return Boolean.class; zurückliefere!

Wie funktioniert das mit dem TableModelListener() ?

kann ich das im Frame wo ich die table verwende mit

modelX.addTableModelListener( listener ) hinzufügen? nur was gehört da dann rein als listener?

vielen dank!
 
Hallo,

als Listener kann sich jedes Objekt registrieren, welches das Interface
TableModelListener implementiert (hat nur eine Methode also nicht so wild).
einfach über die addTableModelListener()-Methode.

Du schreibst dir also ne Klasse zurecht mit der Methode tableChanged(e) und
immer wenn es änderungen in deinem TableModel gibt sollte diese Methode
automatisch aufgerufen werden und dich so über änderungen informieren.

Hast du selber ein TableModel implementiert (direkt vom Interface, bzw. vom
AbstractTableModel) oder nutzt du das DefaultTableModel ?

Gruß JAdix
 
benutze eigenes table model!

habe das jetzt so probiert, bin ich da am holzweg?

1) erst den listener registrieren

tableT.getModel().addTableModelListener(new RegistrationClient.InteractiveTableModelListener());

2) und darunter gleich die class definieren:

public class InteractiveTableModelListener implements TableModelListener {
public void tableChanged(TableModelEvent evt) {
if (evt.getType() == TableModelEvent.UPDATE) {
int column = evt.getColumn();
int row = evt.getFirstRow();
System.out.println("row: " + row + " column: " + column);
}
}
}


wie kann ich darin jetzt auf genau meine checkboxes zugreifen?

bzw. ich habe es noch mit TableModelEvent.INSERT probiert, aber er gibt mir nichts aus wenn ich ein checkbox anhacke oder nicht

danke für die schnellen antworten!
 
Zuletzt bearbeitet:
Hi,

auf den ersten schnellen Blick sieht das schon ganz gut aus !

Die UPDATE-Option ist so weit ich weiß auch korrekt !

Über das Event müsstest du die Event-Quelle bekommen können !

Einfach e.getSource(), das Object mußt du dann nur auf TableModel casten !

Sollte Funktionieren !

Gruß JAdix
 
danke!

das problem ist, das er irgendwie gar nicht reinkommt in das tableChanged(...) !

nur durch anklicken der checkbox passiert da nix?

danke
 
Hallo,

das ist dann aber ein Fehler der im Bereich deines TableCellEditors
zu suchen ist und in der Weise wie dieser auf das TableModel einwirkt !

Gruß JAdix
 
Zurück