Portál AbcLinuxu, 5. listopadu 2025 03:13
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?
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.
gui.JFrame1.access$800
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?
Jo tak to je taky moznost
Ale me by opravdu zajimalo proc si nevezme tu novejsi knihovnu a rad bych to vyresil nejak elegantneji, vi nekdo prosim?
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.