Combobox als Filterkriterium (Gruppierung) in JTable

Status
Nicht offen für weitere Antworten.

JavaTryOut

Mitglied
Hallo,

ich möchte nachfolgendes Tabellen-Layout in Java nachbasteln:

screenshot1.jpg


Die Spaltenbeschriftung ist jeweils der Spaltenname aus der Datenbank. Klickt man auf den Pfeil nach unten, erscheint eine Combobox mit gruppierten Werten, d. h. jeder Wert aus der Spalte erscheint nur einmal. Wird nun ein Wert ausgewählt, soll die ganze Spalte danach gruppiert werden. Zusätzlich soll z. B. ein Eintrag "Custom ..." ein Fenster öffnen und die Möglichkeit bieten, einen String einzugeben nachdem die Tabelle bzw. die Spalte gefiltert wird.

Nun zu den Fragen:
Wie bekomme ich die Spaltenbeschriftung als Combobox und die "gruppierten" Werte aus der betroffenen Spalte da rein?

Die Daten kommen aus einer DB. Hat schon mal jemand sowas nachgebaut und diesbezüglich Erfahrungen gemacht? Mir stellt sich die Frage, wie ich so etwas umsetzen soll und wie performant die jeweiligen Möglichkeiten sind. Abhängig von der Gruppierung sollen sehr viele Daten angezeigt werden. Ist es besser nach jeder Gruppierung die DB abzufragen oder RowFilter zu benutzen?
Kennt jemand Tutorials, Codeschnipsel oder ähnliches, das mir bei dieser Aufgabe weiterhelfen könnte?

Schon mal vielen Dank!
 

Kaffeebohn

Bekanntes Mitglied
Hallo JavaTryOut,

ich habe zwar nicht das selbe, aber etwas ähnliches bereits versucht. Ich wollte allerdings keine ComboBox in der Tabelle haben, sondern eine JProgressBar. Ich habe das grob wie folgt gelöst:

einen entsprechenden Renderer geschrieben für die Tabellenspalte:

Java:
public class ProgressBarRenderer implements TableCellRenderer
{	
	public ProgressBarRenderer() { 
		super();
	}
	
	public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) 
	{
		JProgressBar jbar = (JProgressBar)value;

		return jbar;  
	}
}

Einen solchen instantiiert und wie folgt der Tabelle hinzugefügt:

Java:
table.setModel(model);
model.addColumn("Status");
table.getColumn("Status").setCellRenderer(statusRenderer);

Wenn du nun deiner Tabelle eine Zeile hinzufügst:

Java:
model.insertRow(0, new Object[] {deineProgressBar});

Vielleicht hilft dir das ein wenig weiter und du kannst es an deine Umstände anpassen!

Liebe Grüße
 

Michael...

Top Contributor
Ich habe mal den AutoFilter aus MS Excel2003 mit Java 1.4 nachgebaut (also noch vor RowSorter, Filter und solchen Schnickschnack) - nehme mal an daraufhin solls rauslaufen?!? Allerdings kenne ich Deine Programmier/Java - Erfahrung nicht, und da das ganze recht komplex ist, würde ich erst mal schauen ob es nicht aussreichend ist neben der Tabelle Felder zum Filtern anzulegen und die Filterung direkt in der Datenbank zu machen.
Da der Header bei JTable m.W nur einen Renderer aber keinen Editor besitzt, kannst Du den Header zwar aussehenlassen, als sei er eine ComboBox, aber eben nicht bedienen. Bei meinem damaligen Projekt habe ich einfach bei Mouseclick in einem bestimmten Bereich des Headers ein Popup mit einer entsprechenden Liste aufpoppen lassen. Das mit dem benutzerdefinierten Filtern war etwas komplexer. Habe die Benutzereingabe in ein RegEx transformiert und dann je nach dem ob die Ausdruck negiert mit UND oder ODER verknüpft waren entsprechende Einträge aus der Tabelle rausgeschmissen oder eben dringelassen.
 

JavaTryOut

Mitglied
Hallo,

schon mal vielen Dank für die Antworten!

@Michael...
Also im Grunde ist das so wie in Excel, stimmt! Das der Header dann keine Combo ist, damit kann ich Leben. Die Filter neben der Tabelle sind nicht so schön und unkomfortabel.
Ich hab noch die Idee, dass über die Header der Tabelle die Daten direkt sortiert werden können (ist ja bei jXTable autom. dabei) und die Combos in die erste Zeile zu platzieren. Dann stellt sich nur noch die Frage, ob die Filter wie bei deinem Vorschlag über die DB laufen oder über ein RowFilter? Am einfachsten wäre wirklich die Filter über die DB zu machen, aber wie "flüssig" kann man damit arbeiten? Meine Zweifel liegen bei der "Abfrage"-Geschwindigkeit Anwendung-DB. Wenn das bei 100.000 Daten oder mehr kein Problem darstellt, spricht eigentlich nichts dagegen.
Achja, meine Programmiererfahrung ... bin kein Profi und kein Anfänger. Wenn´s komplex wird knie ich mich auch tiefer rein ;-)


@Kaffeebohn
... du hast das mal versucht? Ist es dann möglich bzw. praktikabel?
Repräsentiert der CellRenderer aus dem Code die erste Zeile mit den ProgressBars? Wenn ja, dann könnte ich diese durch Combos ersetzen und darüber die Daten filtern lassen ... !?

Gruß
 

Kaffeebohn

Bekanntes Mitglied
Ich habe das mal umgesetzt und es hat auch einwandfrei funktioniert. Habe im Anhang einen Screenshot von dem Endergebnis drangehängt damit du dir was drunter vorstellen kannst.

Falls dir das weiterhilft melde dich einfach.

Liebe Grüße
 

JavaTryOut

Mitglied
Hallo,

da kommen wir der Sache schon näher! Ich lass mich von beiden Vorschläge mal inspirieren und bastele daraus was. Wenn ich erfolgreich bin, poste ich hier meine Lösung. Kann sich aber etwas hinziehen, da ich die nächsten Tage viel unterwegs bin ...

Bin ja schon angetan, dass es hier so sachlich rundgeht! In anderen Foren wird man eher für das "Nichts-Können" belächelt und "nur" auf die API verwiesen ...

Vielen Dank für eure Hilfe!

Gruß
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
W Element aus comboBox mit observableList löschen AWT, Swing, JavaFX & SWT 3
T Combobox mit Autocomplete-Funktion AWT, Swing, JavaFX & SWT 7
J Eingaben aus Textfield & ComboBox speichern und in ComboBox wieder ausgeben AWT, Swing, JavaFX & SWT 3
N Promt Text der Combobox AWT, Swing, JavaFX & SWT 0
Doppel JavaFX ComboBox AWT, Swing, JavaFX & SWT 5
P JavaFX ClassCastException bei ComboBox.getValue AWT, Swing, JavaFX & SWT 4
F Wie bekomme ich den Wert der ComboBox in eine Variable gespeichert welche ich für meinen ActionListener nutzen kann? AWT, Swing, JavaFX & SWT 3
M Swing Java Swing/AWT Combobox Bug AWT, Swing, JavaFX & SWT 3
M Combobox bild anklicken AWT, Swing, JavaFX & SWT 2
L JavaFX Wiederspenstige ComboBox AWT, Swing, JavaFX & SWT 0
P Combobox und Enum AWT, Swing, JavaFX & SWT 3
L ComboBox Wert automatisch auswählen AWT, Swing, JavaFX & SWT 6
L Methode zum Füllen einer ComboBox AWT, Swing, JavaFX & SWT 4
K Nullpointer Combobox Listener AWT, Swing, JavaFX & SWT 2
K JavaFX Combobox, Textfield & setOnMouseClicked AWT, Swing, JavaFX & SWT 2
it_is_all Swing Button, ComboBox,... -- Unterschied: NetBeans Design <-> Ausführung AWT, Swing, JavaFX & SWT 2
D JavaFX ComboBox String setzen AWT, Swing, JavaFX & SWT 20
offi Combobox in TableCell AWT, Swing, JavaFX & SWT 1
D Javafx Combobox Abfrage aus mysql AWT, Swing, JavaFX & SWT 8
K Event Handling ComboBox Event Handler AWT, Swing, JavaFX & SWT 7
MrSnake ComboBox-Einträge werden unsichtbar AWT, Swing, JavaFX & SWT 0
L ComboBox: slider positionieren AWT, Swing, JavaFX & SWT 0
M JavaFX ComboBox: Update zur Laufzeit AWT, Swing, JavaFX & SWT 16
M JavaFX Combobox bindBidirectional AWT, Swing, JavaFX & SWT 4
D [Anfänger]ComboBox erstellt Einträge in einer anderen ComboBox AWT, Swing, JavaFX & SWT 3
T JavaFX Editable Combobox Text-Selektierung nach Trigger AWT, Swing, JavaFX & SWT 4
H Combobox aktualisieren AWT, Swing, JavaFX & SWT 2
G Swing ComboBox: Auswahl eines Items der Liste durch Eingabe eines Buchstabens AWT, Swing, JavaFX & SWT 3
M JavaFX ComboBox AWT, Swing, JavaFX & SWT 5
T Problem: ComboBox und addItem AWT, Swing, JavaFX & SWT 5
J ComboBox als Filter benutzen AWT, Swing, JavaFX & SWT 1
M ausgewählte Inhalt von ListItem inn ComboBox in der Tabelle speichern AWT, Swing, JavaFX & SWT 0
Developer_X Java JTable - Combobox + Checkbox - Cellrenderer + Editor AWT, Swing, JavaFX & SWT 3
G Dynamische ComboBox AWT, Swing, JavaFX & SWT 3
U Combobox mit individuellen Texten AWT, Swing, JavaFX & SWT 5
M JavaFX Combobox - Item Auswahl mit Tasten AWT, Swing, JavaFX & SWT 8
F JavaFX Daten aus Tabelle in ComboBox AWT, Swing, JavaFX & SWT 9
C Beschriftungen von Tabellenspalten mit Combobox aussuchen AWT, Swing, JavaFX & SWT 2
G JavaFX ComboBox .getItems().add() Problem AWT, Swing, JavaFX & SWT 9
D Swing [Frage] ComboBox + Label AWT, Swing, JavaFX & SWT 3
F SWT Problem mit Tabelle und Combobox in einem Wizard AWT, Swing, JavaFX & SWT 5
B JAVAFX icon in ComboBox einfügen AWT, Swing, JavaFX & SWT 5
W Swing Combobox Abhängigkeit AWT, Swing, JavaFX & SWT 1
S ComboBox-Werte aus einem Array an Textfields übergeben AWT, Swing, JavaFX & SWT 3
A Swing GUI mit ComboBox, wenn Item ausgewählt wurde neues GUI AWT, Swing, JavaFX & SWT 7
S Combobox aktualisieren AWT, Swing, JavaFX & SWT 3
B Erstellen eigener Combobox ("CellFactory") AWT, Swing, JavaFX & SWT 4
C Swing ComboBox - ActionListener deaktivieren AWT, Swing, JavaFX & SWT 2
A combobox automatisch in ein textfeld wechseln AWT, Swing, JavaFX & SWT 3
J Swing Drive-ComboBox AWT, Swing, JavaFX & SWT 7
C TextFeld in Verbindung zur ComboBox automatisch aktualisieren AWT, Swing, JavaFX & SWT 7
L Swing Model für ComboBox AWT, Swing, JavaFX & SWT 14
H Combobox in einer einzelnen Zelle der Jtable AWT, Swing, JavaFX & SWT 2
T Java Combobox Problem AWT, Swing, JavaFX & SWT 3
C SWT Combobox mit Textdatei füllen AWT, Swing, JavaFX & SWT 2
M comboBox Listener? AWT, Swing, JavaFX & SWT 2
R Datenbanktabellen in Combobox AWT, Swing, JavaFX & SWT 3
C Combobox bei Tabellenänderung mit aktualisieren AWT, Swing, JavaFX & SWT 11
1 CellEditor mit ComboBox richtig beenden AWT, Swing, JavaFX & SWT 4
L SWT Actionlistener Combobox öffnen AWT, Swing, JavaFX & SWT 4
E Swing CellEditor mit Combobox durch Tastatureingabe editieren?! AWT, Swing, JavaFX & SWT 3
GianaSisters Swing ComboBox im jTable (in bestimmter Zelle nicht über die ganze Spalte) AWT, Swing, JavaFX & SWT 4
T Daten mittels ComboBox in ein JTable adden AWT, Swing, JavaFX & SWT 7
N Filternde Combobox in JTable verliert Fokus nach erster Eingabe AWT, Swing, JavaFX & SWT 2
F Wert zu Eintrag in ComboBox speichern?! AWT, Swing, JavaFX & SWT 7
P Swing ComboBox(en) in JTable auslesen und ausgeben AWT, Swing, JavaFX & SWT 11
M Index von Combobox AWT, Swing, JavaFX & SWT 20
L ComboBox in Action AWT, Swing, JavaFX & SWT 4
D ComboBox & CellListRenderer AWT, Swing, JavaFX & SWT 6
D ComboBox-Model mit Observer AWT, Swing, JavaFX & SWT 3
B Taschenrechner mit ComboBox AWT, Swing, JavaFX & SWT 7
T ComboBox auslesen AWT, Swing, JavaFX & SWT 11
P Combobox liesst falschen Wert AWT, Swing, JavaFX & SWT 10
C Combobox im JFrame aus Datenbank befüllen AWT, Swing, JavaFX & SWT 6
M Combobox soll Farbe einer Komponente setzen AWT, Swing, JavaFX & SWT 2
M Swing ComboBox ein SelectedItem übergeben/anzeigen AWT, Swing, JavaFX & SWT 7
J Werte aus Combobox speichern AWT, Swing, JavaFX & SWT 3
R Swing ComboBox und doppelter Event!? AWT, Swing, JavaFX & SWT 10
M SWT Wie Textfeld hinzufügen, nach Auswahl von einem bestimmten Combobox-item? AWT, Swing, JavaFX & SWT 3
M SWT ComboBox mit DB-Inhalten Designfrage AWT, Swing, JavaFX & SWT 5
W MouseListener im editable ComboBox AWT, Swing, JavaFX & SWT 14
W Combobox mit eingabefeld AWT, Swing, JavaFX & SWT 7
T Editable ComboBox / kein Weiterspringen AWT, Swing, JavaFX & SWT 12
M Combobox in JTable AWT, Swing, JavaFX & SWT 4
S Swing ComboBox aus Array befüllen AWT, Swing, JavaFX & SWT 2
K Per ComboBox Dateien einlesen AWT, Swing, JavaFX & SWT 23
0 Hintergundfarbe von editierbarer ComboBox ändern AWT, Swing, JavaFX & SWT 2
M Frage zu ComboBox AWT, Swing, JavaFX & SWT 7
O Bitte um Hilfe bei ComboBox in TableHeader AWT, Swing, JavaFX & SWT 9
A NetBeans und ComboBox AWT, Swing, JavaFX & SWT 2
SuperSeppel13 Combobox zur Farbwahl kollidiert mit NimbusLookAndFeel AWT, Swing, JavaFX & SWT 7
D ComboBox(Model) mit dummyItem AWT, Swing, JavaFX & SWT 10
D Inhalt von Textfield nach ComboBox AWT, Swing, JavaFX & SWT 2
GilbertGrape nochmal editierbare Combobox AWT, Swing, JavaFX & SWT 3
GilbertGrape JTable mit Combobox-Editierung schon nach einem Klick AWT, Swing, JavaFX & SWT 7
E Swing Button ActionListener Infos aus Textfield und ComboBox AWT, Swing, JavaFX & SWT 3
G ComboBox wird nicht angezeigt beim anhängen an eine Gruppe AWT, Swing, JavaFX & SWT 2
G Combobox Event AWT, Swing, JavaFX & SWT 4
G ComboBox aktualisieren AWT, Swing, JavaFX & SWT 13
C Binding eines EntityBean als SelectionInList in ComboBox AWT, Swing, JavaFX & SWT 7

Ähnliche Java Themen

Neue Themen


Oben