Gibt es eine Möglichkeit, es zu tun?Wie kann ich Zeile in JTable ausblenden (unsichtbar machen)?
Antwort
Die beste einfachste Weg wäre, das entsprechende Element aus dem Modell zu entfernen.
Schauen Sie sich Sun's Tutorial for JTables an und sehen Sie sich den Sortier- und Filterbereich an.
Ich bin falsch oder Filterung wurde nur in Java 1.6 aktiviert? – joycollector
Ja, ich habe Angst. – willcodejavaforfood
JXTable von Swinglabs, wenn Sie versuchen möchten, in <1.6 zu filtern. Sie können auch ein eigenes TableModel erstellen, das ein anderes TableModel mit Sortierfunktionen darstellt. – KitsuneYMG
Es gibt die Klasse RowFilter<DefaultTableModel, Object>
, mit der Sie Zeilen ausfiltern können. Das DefaultTableModel kann durch ein eigenes Modell ersetzt werden. Um Filter, implementieren die Methode
@Override
public boolean include(Entry entry) {
// All rows are included if no filter is set
if (filterText.isEmpty())
return true;
// If any of the column values contains the filter text,
// the row can be shown
for (int i = 0; i < entry.getValueCount(); i++) {
String value = entry.getStringValue(i);
if (value.toLowerCase().indexOf(filterText) != -1)
return true;
}
return false;
}
Wenn Zeilen zugreifen, zum Beispiel auf ListSelectionEvents hören, vergessen Sie nicht den sichtbaren Zeilenindex zur vollständigen Zeilenindex in Ihrem Modell zu übersetzen. Java bietet eine Funktion für diese auch:
public void valueChanged(ListSelectionEvent e) {
ListSelectionModel lsm = (ListSelectionModel) e.getSource();
int visibleRowIndex = ... // Get the index of the selected row
// Convert from the selection index based on the visible items to the
// internal index for all elements.
int internalRowIndex = tableTexts
.convertRowIndexToModel(visibleRowIndex);
...
}
TY. Aber ich suchte nach einer Lösung für Java 1.5 ... – joycollector
Dies sollte die akzeptierte Antwort sein –
Sie können Arraylisten für jede Spalte einrichten, die für von Werten ausgefüllt werden gefiltert und diese in einem benutzerdefinierten Renderer implementieren. Wenn die Zeilenwerte einer Zelle nicht vollständig erfüllt sind, ruft der Renderer rekursiv sich selbst mit der Zeile + 1 auf.
, wenn die Zellen Reihe Kriterien nicht erfüllt, es gerendert wird, eine andere Arraylist speichert die Zeilennummern bereits gemacht, seine besten durch Beispiel erläutert dieses Verfahren ist in der Kunden Renderer erweitert JLabel
public Component getTableCellRendererComponent(JTable table, Object color,
boolean isSelected, boolean hasFocus, int row, int column) {
Object value;
String s;
try {
if (row == 0) {
drawn[column].clear();
}// drawn is arraylist which stores cols rend
if (row > table.getModel().getDataVector.size()) {
return null;
}// if we go too far
if (drawn[column].contains(Integer.toString(row)) == true) {
// already rendered?
return getTableCellRendererComponent(table, color, isSelected,
hasFocus, (row + 1), column);
}// render row+1
for (int i = 0; i < filters.length; i++) {
value = table.getModel().getValueAt(row, i);
s = (i == 1) ? df.format(value) : value.toString();
if (filters[i].contains(s) != true) {
//try and put in next row, if succeeds when it reaches column 8 it adds row to
return getTableCellRendererComponent(table, color,
isSelected, hasFocus, (row + 1), column);
}
}
value = table.getModel().getValueAt(row, column);
setFont(getFont().deriveFont(Font.BOLD));
if ((isSelected == false)) {
if ((column == 1)) {
setForeground(Color.magenta);
}// just formatting
else {
setForeground(Color.black);
setBackground(Color.white);
}
} else {
setBackground(Color.blue);
setForeground(Color.white);
}
if ((column == 1))// col 1 is a date, other columns strings
{
setText((value == null) ? "" : df.format(value));
} else {
setText((value == null) ? "" : value.toString());
}
todayStr = df.format(new java.util.Date());
dateval = table.getModel().getValueAt(row, 1);
String datevalStr = df.format(dateval);
if (datevalStr.equals(todayStr)) {
setForeground(Color.red);
}
drawn[column].add(Integer.toString(row));// mark row as rendered
} catch (Exception e) {
e.getMessage();
return null;
}
return this;
}
- 1. Wie @ Html.EditorFor unsichtbar machen?
- 2. Kann ich einen TTreeNode unsichtbar machen?
- 3. Wie kann ich Silverlight-Steuerelemente für Mausaktionen unsichtbar machen?
- 4. Wie Zeile in JTable hinzufügen?
- 5. Ausblenden einer Spalte in JTable
- 6. Urwid: Cursor unsichtbar machen
- 7. Meine Konsolenanwendung unsichtbar machen
- 8. Jtable Einige Spalten ausblenden
- 9. Wie kann ich ListView beim Klicken ausblenden?
- 10. Machen navigationbar Grenze unsichtbar
- 11. Wie entferne ich eine Zeile von JTable?
- 12. Iframe unsichtbar machen
- 13. Verschieben einer Zeile in jTable
- 14. Einen Link komplett unsichtbar machen?
- 15. Wie Zeile dynamisch in JTable hinzufügen
- 16. Wie Zeilenumbruch in einer JTable-Zeile
- 17. machen Ebenen unsichtbar mit Mausklick
- 18. Eingabe durch css unsichtbar machen?
- 19. Wie setze ich ein benutzerdefiniertes Objekt in einer JTable Zeile
- 20. So machen Sie das Startformular zunächst unsichtbar oder versteckt
- 21. Wie kann ich die letzte Zeile jeder Gruppe ausblenden?
- 22. JTable: Keine ausgewählte Zeile
- 23. Kann ich Gesichter eines Gitters in three.js ausblenden?
- 24. Zeile in GridLayout ausblenden
- 25. Rückgabe von der S3-Indexierungsfunktion "[" unsichtbar machen
- 26. JAVA jTable - Wie kann man alle Zellen nicht editierbar machen?
- 27. Angular JS - Wie kann ich Schaltfläche ausblenden, wenn alle Elemente aus Array unsichtbar ist
- 28. Wie ändere ich JTable Headerhöhe?
- 29. Nur eine Zeile editierbar auf JTable
- 30. jTable Kontrollkästchen und Zeile entfernen
Aber wenn ich brauche, um zu zeigen, ihm später wieder? – joycollector
Dann fügen Sie es wieder :) – willcodejavaforfood
Endlich habe ich diesen Weg ... Zwei dataSets ... Einer ist voll, der andere füllt, wenn fireDataTableChanged aufgerufen ... Aber ich fürchte, es ist langsam ... – joycollector