IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Avatar
Petr.M
Člen
Avatar
Petr.M:29.5.2018 22:23

Mám problém se zobrazením vlastního kurzoru ve Swingové aplikaci. Vzhled si nastavuju obrázkem.

Zdrojový kód pro nastavení kurzoru je:

Toolkit toolkit = Toolkit.getDefaultToolkit();
Image image = toolkit.getImage("sword.png");
Point hotSpot = new Point(0,0);
Cursor cursor = toolkit.createCustomCursor(image, hotSpot, "Sword");
panel.setCursor(cursor);

Pro příklad - obrázek s tužkou (velikost 32x32px) se zobrazuje normálně tužka , ale obrázek s mečem (velikost 128x128 px) se zobrazuje nekorektně, menší velikost, zkreslené barvy a některé úplně chybí. meč

Aplikaci testuji na Linux Ubuntu 16.04. Jednou jsem ji zkusil spustit na počítači s Windows 8, oba obrázky se jako kurzor zobrazovaly barevně správně, jen odhaduji, že s velikostí 32x32 px.

Moje otázka je - jaké parametry by měl mít obrázek ze kterého chci ikonu kurzoru vytvořit (velikost, typ, kvalita, počet barev) a jestli to závisí na zpracování v Javě nebo na konkrétním OS? A nebo jestli je v mém kódu nějaká chyba, kvůli které se ikona kurzoru správně nezobrazuje.

Editováno 29.5.2018 22:24
Odpovědět
29.5.2018 22:23
Sometimes you just do things. - Scott Jurek
Avatar
Jirka Luňák:29.5.2018 22:44

Problém je, že ve většina OS podporuje velikost ikony kurzoru 32x32px, a když bude zdrojový obrázek větší, tak se to pokusí resiznout na tu správnou velikost. Takže se může stát, že se ikona kurzoru nezobrazí správně.

Zkus zavolat metodu getBestCursor­Size(int preferredWidth, int preferredHeight) pro zjištění ideální velikosti kurzoru. Podrobnější info najdeš v dokumentaci:
dokumentace

Takže by řešením bylo pak obrázek v nějakém editoru upravit na požadovanou velikost. Případně poté zjistit, kolik barev podporuje daný OS pro ikonu kurzoru a to upravit také. Chybou v kódu to určitě není.

Akceptované řešení
+20 Zkušeností
+2,50 Kč
Řešení problému
 
Nahoru Odpovědět
29.5.2018 22:44
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 2 zpráv z 2.