ERLEDIGT
NEIN
NEIN
ANTWORTEN
2
2
ZUGRIFFE
435
435
EMPFEHLEN
-
Hallo Zusammen,
ich möchte gerne den RowFilter zwecks "Filterung über das TableModel" einsetzen - was soweit auch gut funktioniert, doch an einer Stelle komme ich nicht weiter.
Problemstellung:
Um die Mehrsprachigkeit zu wahren, habe ich ein Attribut "strStatus" (private Map<String, String[]> strStatus, arrayUebersetzteWerte
in eine HashMap gelegt und einen Renderer für die entsprechende Tabellenzelle geschrieben:
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { Component c = super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column); if (c instanceof JLabel) { JLabel label = (JLabel) c; label.setHorizontalAlignment(CENTER); Map<String, String[]> hsmValue = (Map<String, String[]>) value; String[] strTextArray = hsmValue.get(MyBundleManager.getInstance().getCurrentLocale().getLanguage()); // übersetzter Wert if(strTextArray != null) { setText(strTextArray[0]); } } return c; }
Den RowFilter erstelle ich wie folgt:
Code :1 2 3
List<RowFilter<Object, Object>> arlRowFilter = new ArrayList<RowFilter<Object, Object>>(); arlRowFilter.add(RowFilter.regexFilter("Suchtext"));
Wie kann ich jetzt den RowFilter dazu bewegen, über das mehrsprachig gehaltene Attribut (HashMap) zu filtern ?
Über eine Hilfe wäre ich sehr dankbar,
Gruß
RL
-
Sehe ich das richtig, dass du mit dem Renderer deine Tabelle füllen willst?
Ich fülle meine Tabellen mit einem TableModel bzw. DefaultTableModel.
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
DefaultTableModel tModel = jTable.getTableModel(); // Erst einmal alle Einträge entfernen, um die Anzeige aktuell zu halten int size = tModel.getRowCount(); for (int i=0; i<size;i++) { tModel.removeRow(0); } // Holen der darzustellenden Daten - in deinem Fall die Texte. HashMap<String, LeadImpl> leads = myModel.getLeads(); for (LeadImpl lead : leads.values()) { // Das Object-Array muss so groß sein, wie du Spalten in der Tabelle hast. Kann man auch per jTable.getColumnCount() ermitteln falls nötig Object[] row = new Object[4]; // Setzen der Werte aus iterierten Item row[0] = lead.getQualifizierung(); row[1] = lead.getStatus(); row[2] = lead.getBuchungsdatumAsString(); row[3] = lead.getBezeichnung(); // Zeile dem Model hinzufügen tModel.addRow(row); } // Model wieder an die Table übergeben this.jTable.setModel(tModel);
Bei großen Tabellen würde es sich evtl. anbieten die Werte in einer Liste bzw. ArrayList zu speichern.
VG
Eraser
-
Hallo,
das siehst Du falsch - ich habe in meiner Anwendung ein DefaultTableModel und füllen es mit Daten aus der Datenbank.
Der Renderer wird nur auf die Tabellenzelle gesetzt, damit ich die Mehrsprachigkeit des Wertes wahre - der Renderer kennt die übersetzen Werte des Strings mit der jeweiligen locale und setzt diesen entsprechend.
Ich weiß jetzt nur nicht, wie ich dem RowFilter der Tabelle so konfiguriere, dass er bei der Filterung die Elemente der Map berücksichtigt...
Ich kann ja lediglich Regex mitgeben:
--> arlRowFilter.add(RowFilter.regexFilter("Suchtext"));
Gruß
BMGeändert von RLott (11.11.10 um 16:34 Uhr)
Ähnliche Themen
-
Rowfilter auf einzelne Columns begrenzen
Von UnkiDunki im Forum Swing, Java2D/3D, SWT, JFaceAntworten: 2Letzter Beitrag: 10.06.08, 22:10 -
Reguläre Ausdrücke im javax.swing.RowFilter
Von digitalFreeman im Forum Algorithmen & Datenstrukturen mit JavaAntworten: 3Letzter Beitrag: 08.08.07, 10:44 -
JTable: rowFilter funktioniert nach DefaultTableModel nicht
Von Dr$arez im Forum Swing, Java2D/3D, SWT, JFaceAntworten: 0Letzter Beitrag: 01.08.07, 10:28





Zitieren
Login





