Własny kursor

0

Na mouseEntered chciałbym ustawiac kursor na jakiś obrazek. Mimo poprawności kodu kursora nie widać. Działa a go nie widać dlaczego?

        Toolkit toolkit = Toolkit.getDefaultToolkit();   
        Image image = toolkit.getImage("cursor.gif"); 
        Point hotSpot = new Point(45,41);  
        Cursor cursor = toolkit.createCustomCursor(image, hotSpot, "Celownik");
        setCursor(cursor);
0

Takie objawy są gdy nie ma pliku graficznego (u Ciebie "cursor.gif"). Ponieważ masz kod

toolkit.getImage("cursor.gif");

to plik graficzny powinien być w katalogu bieżącym.

0

i jest i nic to nie zmienia

0

Dla "img/cursor.gif" i "cursor.gif" i tak nie działa. Napisałem tu jak już 3 kody z google nie zadziałały.

0

Uruchamiasz program z ręki czy w IDE (Eclipse, NetBeans,..)? Tworzysz własne pakiety czy korzystasz z pakietu domyślnego? To wszystko ma wpływ na katalog bieżący. Ja nadal twierdzę, że pliku cursor.gif nie ma w katalogu bieżącym.

0

Jest w dobrym miejscu, gdyż cały apllet polega na ruszającym się potworku i myszce w postaci celownika. Zamieniłem potworka na obraz celownika i się wyświetla więc błąd gdzie indziej. Używam NetBeans.

0

Nadal uważam, że plik jest w złym miejscu. Żeby sprawę wyjaśnić wrzuć gdzieś plik cursor.gif.

0

Ja bym do tego kodu użył wyjątku try catch, by zobaczyć co za błędy mamy, a w catchu może wyłapuj każdy bład (Exception costam), a do drukowania na ekran użyj costam.printStackTrace(); . Wiem, że nie powinno sie stosować tej metody wydruku, ale pomaga w znaleźieniu błedu, po wydruku zobaczysz jaka linia ma błąd.

0

Ja sprawdziłem juz dawno, nie ma żadnego błędu. Fragment dokumentacji metody createCustomCursor

Creates a new custom cursor object. If the image to display is invalid, the cursor will be hidden (made completely transparent), and the hotspot will be set to (0, 0).

0

Hmmm..., natomiast wyjątek i tak powinno się wyłapać, przy komendzie Image image = toolkit.getImage("cursor.gif") i tu jeżeli nie będzie grafiki, powinien wyrzucic wyjątek, bynajmniej w mojej aplikacji tak jest, a tworzeni nowego kursora Method Toolkit.createCustomCursor(Image cursor, Point hotSpot, String name) można w catchu wyłapać także Exception wyłapie wszystko a do niej wystarczy:

Throws:
IndexOutOfBoundsException - if the hotSpot values are outside the bounds of the cursor
HeadlessException - if GraphicsEnvironment.isHeadless() returns true

Fakt, że jeżeli grafiki nie znajdzie to będzie kursor nindża :P

0

jest grafika mogę wrzucić cały solution. Sami zobaczcie.

0

Projektu jeszcze nie uruchomiłem, ale kod identyczny jak w pierwszym poście zmienia u mnie kursor. Ja bym inaczej ustawił hotpoint - na punkt przecięcia dwóch prostych celownika. Teraz wychodzę, jak wrócę to uruchomię projekt.
Uruchomiłem projekt, plik "img/cursor.gif" nie znajduje się w katalogu bieżącym. Przeniosłem go do katalogu bieżącego user image

0

Ktoś z drogich forumowiczów wie dlaczego to nie działa?

0

@bogdans napisał odpowiedż, jak rozwiązać problem, bez używania wyjątków by szukać gdzie jest błąd, bo jak widac nie był trudny wo wykrycia.

2

Przesuń (skopiuj) plik z obrazkiem do katalogu bieżącego i będzie działać. Napisałem Ci to 5 dni temu, tak długo się kopiuje plik?

1 użytkowników online, w tym zalogowanych: 0, gości: 1