Witam
Jestem początkujący w programowaniu i potrzebuje pomocy przy dodaniu obrazu do projektu który robię w programie NetBeans 16.
Dodaje do GUI obraz w następujący sposób:
1 klikam prawym przyciskiem na projekt dalej New > Java Package
2 nazywam go Obrazy
3 przeciągam do niego plik ze zdjęciem o nazwie abc.png
4 w GUI wstawiam nowy panel a w nim jLabel
5 klikam właściwości jLabel i tam gdzie jest icon klikam "..."
6 wybieram Image Within Project, Package > Obrazy, no i w File wyświetla mi się nazwa obrazu abc.png wiec ją wybieram
7 daje ok i obraz mam w GUI
8 odpalam program przez kliknięcie run i wyskakuje błąd który wkleiłem poniżej a okienko wcale się nie odpala.
9 jak usuwam ten obraz to program uruchamia się bez problemu
Zauważyłem że jak w pkt 6 wybieram External Image > File or URL > wskazuje ścieżkę do tego samego obrazu, znajdującego się na komputerze, to mogę bez żadnych problemów odpalić program. Tylko wtedy zapewne gdy przeniosę program na inne urządzenie to nie wczyta mi go, bo obraz zostanie na moim komputerze, dobrze myślę?
Dodam jeszcze że gdy w pkt 6 wybieram External Image > Import to Project to mam ten sam błąd co za pierwszym razem.
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException: Cannot invoke "java.net.URL.toExternalForm()" because "location" is null
at java.desktop/javax.swing.ImageIcon.<init>(ImageIcon.java:232)
at com.mycompany.matematyka4.ObliczSprytnie.initComponents(ObliczSprytnie.java:199)
at com.mycompany.matematyka4.ObliczSprytnie.<init>(ObliczSprytnie.java:17)
at com.mycompany.matematyka4.ObliczSprytnie$1.run(ObliczSprytnie.java:312)
at java.desktop/java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:318)
at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:773)
at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:720)
at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:714)
at java.base/java.security.AccessController.doPrivileged(AccessController.java:399)
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86)
at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:742)
at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113)
at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109)
at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)
------------------------------------------------------------------------
BUILD SUCCESS
------------------------------------------------------------------------
Total time: 3.164 s
Finished at: 2023-01-14T11:37:31+01:00
co robię źle ? pomóżcie.
Wszystkiego uczę się sam i niestety nie mam kogo się zapytać jeśli mam jakieś niejasności. Może ktoś mający pojęcie o Javie i pracujący na NetBeans da mi do siebie jakiś kontakt żebym czasem mógł mu głowę zawrócić od czasu do czasu? Byłbym wdzięczny. ;)