Jedną z takich rzeczy jest możliwość sortowania w JTable [tego komponentu używam w OOo2GD do wyświetlania listy plików w oknie importu]
Niestety możliwość ta jako standardowa funkcjonalność komponentu pojawiła się dopiero w Java 6, wcześniej by to zrobić trzeba było strasznie kombinować.
Jednak czasem pisząc program musimy celować w starszą wersję Java'y niż najnowsza, tak jest w przypadku OOo2GD, które ze względu na część MacOS'ów korzysta z Java 5... jednak większość użytkowników OOo2GD używa go z Java 6 co więc robić? :-)
Użyć sztuczki! :-)
Cały dowcip polega na tym by na systemach z Java 6 wykonać kod:
jTable1.setAutoCreateRowSorter(true);
Niestety kod OpenOffice.org2GoogleDocs kompilowany jest dla Java 5, a jak już wyżej pisałem JTable w Java 5 nie ma tej metody.
W tym miejscu pojawia się wspomniana sztuczka :-) Polega ona na tym by wywołać tą metodę
setAutoCreateRowSorter(boolean)
poprzez mechanizm odbić :-) if (System.getProperty("java.specification.version").compareTo("1.5")>0) {
try {
Method method = jTable1.getClass().getMethod("setAutoCreateRowSorter", boolean.class);
method.invoke(jTable1, true);
} catch (Exception ex) {
ex.printStackTrace();
}
}
Najpierw upewniamy się, że mamy do czynienia z wersją Java'y wyższą niż 1.5, a następnie szukamy w klasie JTable metody
setAutoCreateRowSorter(boolean)
by wywołać ją przy użyciu invoke(Object,Class[])
i już wszystko gotowe :-) Oczywiście ponieważ kod związany z odbiciami może się "nie udać wykonać", bo np. Java kłamie i choć przedstawia się jako coś wyższego od 1.5 to w rzeczywistości nie oferuje odpowiedniej metody, to łapiemy wyjątek i tutaj mamy go prawo całkowicie legalnie zignorować.
Voilà :-) ot cała sztuczka :-)
Podobne postybeta
Refleksje i serializacja w Java'ie - podstawy i obalanie mitów ;-)
Sztuczki tropiciela błędów, part 2 ;-)
Sztuczki tropiciela błędów, part 4
Zinwigiluj się sam ;-)
O wojsku
Brak komentarzy:
Prześlij komentarz