2013-04-30 9 views
6

tytuł jest mylący, ale nie wiem jak to wyjaśnić w kilku słowach:nasłuchiwać „otwartego pliku z mojej aplikacji Java” zdarzenie na oknach

Mam aplikacji java, który odczytuje pliki * .example. Dodałem również skojarzenie plików dzięki install4j, więc moja aplikacja jest uruchamiana, gdy użytkownik kliknie dwukrotnie dowolny plik z rozszerzeniem * .przykładowo

Wygląda na to, że install4j wysyła ścieżkę do pliku w args[], więc powinno być łatwo otworzyć ten plik i pokaż go w mojej aplikacji. ALE co się stanie, jeśli aplikacja jest już uruchomiona? Mogę zezwolić tylko na jedną instancję aplikacji, więc skąd mogę wiedzieć, że użytkownik otwiera plik?

Znalazłem to: http://resources.ej-technologies.com/install4j/help/api/com/install4j/api/launcher/StartupNotification.html

Ale ja nadal nie rozumiem, w jaki sposób należy go używać i co mam dodać w mojej aplikacji do słuchania dla tego wydarzenia. Gdzie mogę znaleźć przykład?

+0

Jeśli nie możesz znaleźć rozwiązania poprzez Install4J, zawsze jest [Java Web Start] (http://stackoverflow.com/tags/java-web-start/info). [Demo usług plików.] (Http://pscode.org/jws/api.html#fs) pokazuje, jak z niego korzystać przy pierwszym uruchomieniu, a także przy otwieraniu nowego pliku. –

Odpowiedz

4

Na podstawie dokumentacji, którą związane, wygląda na to, można to zrobić:

StartupNotification.registerStartupListener(new StartupNotification.Listener() { 
    public void startupPerformed(String parameters) { 
     System.out.println("Startup performed with parameters " + parameters); 
    } 
}); 

Od startupPerformed zostanie wywołana z różnych wątków, trzeba upewnić się, że kod, który obsługuje te powiadomienia jest Wątek bezpieczny.

Dokumentacja mówi:

Dla wielu plików, pliki są otoczone cudzysłowami i oddzielone spacjami.

Musisz przetworzyć również ciąg parametrów.

+0

brzmi nieźle, spróbuję i zaakceptuję jutro. Dziękuję @andrewdotn !! – TheBronx

+1

to działa =) Dodałem 'i4jruntime.jar' jako bibliotekę dla mojego projektu i użyłem twojego przykładowego kodu wewnątrz' main() '. Zdarzenie jest uruchamiane, gdy aplikacja jest uruchomiona i otwierany jest plik, a zmienna "parametry" zawiera bezwzględną ścieżkę do pliku. – TheBronx

Powiązane problemy