Swing JTable mit Sorter: Keine Sortierung bei Klick in Header

Natac

Bekanntes Mitglied
Hallo,

ich habe eine JTable, die einen Filter und einen Sorter hat. Nun ist es ja so, dass der Sorter automatisch anspringt, wenn in den Header der Tabelle geklickt wird.

Das würde ich gerne verhindern. Die Spalten sollen weiterhin verschiebbar (nicht ganz so wichtig) und in der Größe änderbar (wichtig) bleiben. Ich möchte nur nicht mehr, dass sie sich sortieren, wenn ich auf den Header klicke.

Bisherige Versuche:
Das einzige, was bisher funktioniert hat, ist
Code:
getTableHeader.setEnabled(false);
. Allerdings killt mir das auch die Änderbaren Spalten. Ich finde aber auch ums verrecken nichts, was mir irgendwie zugriff auf das Maus-Verhalten gibt.

Hintergrund:
Ich habe einen Zusätzlichen Button im Header jeder Spalte. Den soll man klicken können, OHNE das sich die Spalte sortiert. Die Sortierung selbst würde dich gerne bei einem Klick auf den einen anderen Button im Header durchführen (in dem ich den Sorter dann manuell starte).
Da das ganz aber nur gezeichnet wird, gibt es "physikalisch" nur den JTableHeader, der beim Klick auf sich eben den Sorter auslöst (egal wo). Das würde ich gerne vermeiden.

Zur Verdeutlichung eine kleine Skizze:
Code:
|<-------------- Spalte --------->|
|[Nicht-Sort-Button] [Sort-Button]|
 
Zuletzt bearbeitet:
Hab jetzt eine (unschöne) Lösung gefunden:

Im Konstruktor meiner Tabelle habe ich jetzt folgende Zeilen hinzugefügt:

Java:
setTableHeader(new JTableHeader(getTableHeader().getColumnModel()) {
			@Override
			protected void processMouseEvent(final MouseEvent e) {
				if (e.getID() != MouseEvent.MOUSE_CLICKED) {
					super.processMouseEvent(e);
				}
			}
		});

Damit werden alle Klick-Events auf den Header gekillt. Die Buttons feuern dann beim Event MOUSE_PRESSED.

Ist zwar ein Workaround, aber keine wirkliche Lösung. Wenn also noch jemand ne Idee hat, wäre ich sehr dankbar dafür.
 
Ich hab's jetzt nicht ausprobiert, aber ist das nicht für die Sortierung zuständig:
Java:
JTable table = new JTable();
table.setAutoCreateRowSorter(false);
 

Zurück
Oben