Wie wird die JTable-Spalte mit Kontrollkästchen versehen?

8

Vorwort: Ich bin schrecklich mit Java und schlimmer mit Java-Komponenten.

Ich habe verschiedene Tutorials gefunden, wie man Buttons zu Tabellen hinzufügen kann, aber ich habe Schwierigkeiten, Checkboxen hinzuzufügen. Ich brauche eine Spalte, die ein Textfeld als Standard markiert (CellRenderer, denke ich, handhabt das), dann beim Klicken auf Tickbox, hebt die Box auf, zeichnet die Box neu und feuert ein Ereignis ab, das ich verfolgen kann.

>

Zur Zeit habe ich einen benutzerdefinierten Cellrenderer:

%Vor%

Was derzeit das Zeichnen des Kontrollkästchens behandelt, sondern nur das Häkchen setzt und das Kontrollkästchen deaktiviert, wenn diese Zeile ausgewählt ist. Aber ich weiß nicht, wie ich mit den Ereignissen umgehen soll. Wirklich, was ich verlange, ist möglicherweise ein Link zu einem guten Tutorial, wie man Checkboxen sauber zu einer JTable hinzufügt. Jede Hilfe wird sehr geschätzt:)

    
theraven 25.05.2010, 01:40
quelle

5 Antworten

23

Sie müssen keinen eigenen Tabellenrenderer erstellen. Hier ist ein einfacheres Beispiel . Erstellen Sie einfach ein benutzerdefiniertes Tabellenmodell und geben Sie für eine gegebene Spalte die Klasse Boolean für:

zurück %Vor%

Wenn die Spalte bearbeitbar sein soll, geben Sie für

den Wert true zurück %Vor%

JTable kümmert sich um das Rendering für Sie.

Ein anderes Beispiel finden Sie hier.

    
Jay Askren 25.05.2010, 01:50
quelle
5

Wie Peter sagt, ist es einfach, die erweiterte Klasse DefaultTableModel zu verwenden, zB:

%Vor%     
Kachwahed 07.08.2011 19:43
quelle
4

Hier ist ein simple recht ausgeklügeltes Beispiel mit einem TableCellRenderer und TableCellEditor . Siehe auch Konzepte: Editoren und Renderer .

Nachtrag: @Jay Askrens Standpunkt ist gut gewählt. Der Standard-Renderer für Boolean.class , wie im Tutorial beschrieben, kann alles sein, was Sie brauchen.

    
trashgod 25.05.2010 01:43
quelle
3

Die einfachste Lösung besteht darin, das DefaultTableModel zu verwenden und ein boolesches Objekt als Werte zu verwenden.

    
Peter 25.05.2010 07:02
quelle
-5

Setzen Sie im Swing Designer den Spaltentyp auf boolean

    
insufferableKnowItAll 11.11.2012 05:54
quelle