Halloweenská akce! Na stránce s dobitím bodů zadej dole kód STRASIDELNYCH20 a získej porci +20% bodů zdarma!
Akce končí 31.10. o půlnoci.
Avatar
Petr.M
Člen
Avatar
Petr.M:29. května 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. května 22:24
Odpovědět 29. května 22:23
Sometimes you just do things. - Scott Jurek
Avatar
Jirka Luňák:29. května 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í
+1 bodů
Řešení problému
 
Nahoru Odpovědět  +1 29. května 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.