Portál AbcLinuxu, 13. května 2025 16:36

Dotaz: Java - Swing - Image Label

17.7.2009 10:21 Marek Koci
Java - Swing - Image Label
Přečteno: 253×
Odpovědět | Admin

V mem programu mam label ve kterem zobrazuji obrazek, dany kod je tento:

jLabel3.setIcon(new javax.swing.ImageIcon(getClass().getResource("/images/smile.png")));

Vytvoril jsem si udalost kliknuti levym tlacitkem na tento label a chci aby se po kliku obrazek zmenil, vlozim tedy do te metody tento kod:

jLabel3.setIcon(new javax.swing.ImageIcon(getClass().getResource("/images/redcross.png")));

Program se prelozi, ale po kliknuti na label mi program vysype do konzole toto:

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
        at javax.swing.ImageIcon. init (ImageIcon.java:155)
        at gui.JFrame1.jLabel3MouseClicked(JFrame1.java:259)
        at gui.JFrame1.access$800(JFrame1.java:8)
        at gui.JFrame1$9.mouseClicked(JFrame1.java:179)
        at java.awt.Component.processMouseEvent(Component.java:6111)
        at javax.swing.JComponent.processMouseEvent(JComponent.java:3276)
        at java.awt.Component.processEvent(Component.java:5873)
        at java.awt.Container.processEvent(Container.java:2105)
        at java.awt.Component.dispatchEventImpl(Component.java:4469)
        at java.awt.Container.dispatchEventImpl(Container.java:2163)
        at java.awt.Component.dispatchEvent(Component.java:4295)
        at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4461)
        at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4134)
        at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4055)
        at java.awt.Container.dispatchEventImpl(Container.java:2149)
        at java.awt.Window.dispatchEventImpl(Window.java:2478)
        at java.awt.Component.dispatchEvent(Component.java:4295)
        at java.awt.EventQueue.dispatchEvent(EventQueue.java:604)
        at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:275)
        at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:200)
        at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:190)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:185)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:177)
        at java.awt.EventDispatchThread.run(EventDispatchThread.java:138)

Oba obrazky existuji. Nevite prosim co s tim?

Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

17.7.2009 10:26 cronin | skóre: 49
Rozbalit Rozbalit vše Re: Java - Swing - Image Label
Odpovědět | | Sbalit | Link | Blokovat | Admin
Druhy obrazok patrne neexistuje. Ja viem, je to v priamom rozpore s tym, co si napisal, ale ak pocitac tvrdi, ze nejaky resource nevie nacita, tak je to zvycajne pravda. :-)

Vyber volanie getResource() von a navratovu hodnotu testuj. Ziskas istotu, kde sa to pokazi.

Over, ci nie je preklep v mene suboru. Copy-paste je v tomto pripade lepsie ako 10x to precitat - clovek tam vzdy precita to, co tam precitat chce.

Over, ci sa subor aj spravne bali do vysledneho jar suboru.

17.7.2009 10:29 cronin | skóre: 49
Rozbalit Rozbalit vše Re: Java - Swing - Image Label
Odpovědět | | Sbalit | Link | Blokovat | Admin
Btw, to je nejaky generovany kod? Ten formular musi byt dost divoky:
gui.JFrame1.access$800
17.7.2009 12:11 Marek Koci
Rozbalit Rozbalit vše Re: Java - Swing - Image Label
Odpovědět | | Sbalit | Link | Blokovat | Admin

Omlouvam se, moje chyba, ten druhy obrazek ma priponu jpg, cehoz jsem si nevsiml. Priponu jsem tedy opravil, ale ted mi to haze pro zmenu toto:

sun.awt.image.ImageFormatException: Wrong JPEG library version: library is 62, caller expects 70
        at sun.awt.image.JPEGImageDecoder.readImage(Native Method)
        at sun.awt.image.JPEGImageDecoder.produceImage(JPEGImageDecoder.java:136)
        at sun.awt.image.InputStreamImageSource.doFetch(InputStreamImageSource.java:264)
        at sun.awt.image.ImageFetcher.fetchloop(ImageFetcher.java:189)
        at sun.awt.image.ImageFetcher.run(ImageFetcher.java:153)

Program chce verzi knihovny libjpeg 7 a rika ze mam verzi 6.2

Zde je vypis jak to opravdu je:

$ ls -l /usr/lib | grep libjpeg
-rw-r--r--  1 root root   245342 2009-06-27 11:54 libjpeg.a
lrwxrwxrwx  1 root root       16 2009-06-27 11:54 libjpeg.so -> libjpeg.so.7.0.0
-rwxr-xr-x  1 root root   140588 2009-07-15 13:34 libjpeg.so.62
-rwxr-xr-x  1 root root   140588 2009-07-15 13:34 libjpeg.so.62.0.0
lrwxrwxrwx  1 root root       16 2009-06-27 11:54 libjpeg.so.7 -> libjpeg.so.7.0.0
-rwxr-xr-x  1 root root   226063 2009-06-27 11:54 libjpeg.so.7.0.0

Knihovnu libjpeg mam nejnovejsi verzi 7 a tu verzi 62 tam mam jen aby mi fungovaly nejake starsi programy (napr. gwenview pro kde3). Proc si program tedy nevezme tu novejsi verzi 7 kdyz tam je?

17.7.2009 12:40 cronin | skóre: 49
Rozbalit Rozbalit vše Re: Java - Swing - Image Label
Pragmaticky by som jpg skonvertoval na png a na cely problem do dvoch minut zabudol. :-)
17.7.2009 12:53 Marek Koci
Rozbalit Rozbalit vše Re: Java - Swing - Image Label

Jo tak to je taky moznost:-D Ale me by opravdu zajimalo proc si nevezme tu novejsi knihovnu a rad bych to vyresil nejak elegantneji, vi nekdo prosim?

default avatar 17.7.2009 20:57 default | skóre: 22 | Madrid
Rozbalit Rozbalit vše Re: Java - Swing - Image Label

Píše, že mu chybí verze 70. Ty máš 62 a 7. Zkus přidat nulu. :-D

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.