T
Tobias Köhler
Hallo. Habe ein Performance-Problem:
Ich hole mir eine Excel-Liste, schreibe diese Daten in ArrayLists(Tabelle - Zeile - Zellen: ArrayList<ArrayList<String>>) und erzeuge dann TableItems.... alles kein Problem.
Nun will ich diese Tabelle filtern, dabei kann es passieren, dass in einigen Spalten auf einmal nix mehr steht. Das Filtern an sich ist schnell, aber dann kommt die Methode, die prüfen soll, ob in diesen Spalten Inhalt ist. Zuerst wird für jede Spalte ein pack() durchgeführt(Gibt es da auch was schnelleres? Das macht schon viel Last aus.)
Wenn Inhalt, dann soll er in die nächste Spalte springen. Wenn kein Inhalt in der gesamten Spalte, dann soll er die Breite auf 0 setzen. Und das dauert nun seeeehr lange...
Hier mal die Methode:
Ich hole mir eine Excel-Liste, schreibe diese Daten in ArrayLists(Tabelle - Zeile - Zellen: ArrayList<ArrayList<String>>) und erzeuge dann TableItems.... alles kein Problem.
Nun will ich diese Tabelle filtern, dabei kann es passieren, dass in einigen Spalten auf einmal nix mehr steht. Das Filtern an sich ist schnell, aber dann kommt die Methode, die prüfen soll, ob in diesen Spalten Inhalt ist. Zuerst wird für jede Spalte ein pack() durchgeführt(Gibt es da auch was schnelleres? Das macht schon viel Last aus.)
Wenn Inhalt, dann soll er in die nächste Spalte springen. Wenn kein Inhalt in der gesamten Spalte, dann soll er die Breite auf 0 setzen. Und das dauert nun seeeehr lange...
Hier mal die Methode:
Java:
/**
* Überprüft, ob eine Spalte Inhalt hat.
* Wenn false, dann wird die Breite dieser Spalte auf 0 gesetzt.
*/
public static void checkContentAvailable()
{
boolean isContentAvailable = false;
for(int i=0; i<table.getColumnCount(); i++)
column[i].pack();
for(int i=0; i<table.getColumnCount(); i++)
{
for(int j=0; j<table.getItemCount(); j++)
{
if(!table.getItem(j).getText(i).equals(""))
{
isContentAvailable = true;
break;
}
}
if(!isContentAvailable)
table.getColumn(i).setWidth(0);
else
isContentAvailable=false;
}
}