Visualizzazione dei risultati da 1 a 6 su 6

Discussione: cardLayout in sciopero

  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2008
    Messaggi
    396

    cardLayout in sciopero

    Ciao, avevo creato un cardLayout funzionante.
    Dopo aver riorganizzato i miei file in cartelle separate, il cardLayout non funziona più, non vede più le immagini da caricare anche se il percorso è corretto (ho provato anche a modificare la posizione di queste, ma il risultato non cambia).

    Errori in fase di esecuzione:
    codice:
    Exception in thread "AWT-EventQueue-0" java.lang.IllegalArgumentException: input == null!
            at javax.imageio.ImageIO.read(ImageIO.java:1354)
            at mensa.presentation.backgroundedPanel.<init>(backgroundedPanel.java:16)
            at mensa.pagine.orario.initComponents(orario.java:44)
            at mensa.pagine.orario.<init>(orario.java:16)
            at mensa.pagine.card.initComponents(card.java:29)
            at mensa.pagine.card.<init>(card.java:15)
            at mensa.pagine.card$1.run(card.java:64)
            at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
            at java.awt.EventQueue.dispatchEvent(EventQueue.java:461)
            at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:269)
            at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:190)
            at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:184)
            at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:176)
            at java.awt.EventDispatchThread.run(EventDispatchThread.java:110)
    COSTRUITO CON SUCCESSO (tempo totale: 3 secondi)
    creazione del card:
    codice:
    cardL = new CardLayout();
            jPanel3 = new javax.swing.JPanel(cardL);
            jPanel3.add(new backgroundedPanel("mensa/pannelloVuoto.png"),"pag1");
            jPanel3.add(new backgroundedPanel("mensa/nonDisp.png"),"pag2");
            jPanel3.add(new backgroundedPanel("mensa/successo.png"),"pag3");
    La cartella principale si chiama mensa. Ho il file con il cardLayout in mensa.pagine e le immagini in mensa.imm(ma le ho messe anche nella stassa cartella di mensa.pagine e non funziona cmq)

    backgroundedPanel è un pannello che carica delle immagini come sfondo, sono proprio quelle che non trova.

  2. #2
    Utente di HTML.it
    Registrato dal
    Jun 2008
    Messaggi
    396
    ho trovato l'errore. se non metto le immagini nella stessa cartella dove si trova il backgraundedPanel, non le vede in nessun modo. Come mai?

    p.s. il backgroundedPanel utilizza un localURL per prendere l'indirizzo delle immagini.

  3. #3
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da Salinas
    se non metto le immagini nella stessa cartella dove si trova il backgraundedPanel, non le vede in nessun modo. Come mai?
    Dipende cosa ci fai con una stringa "mensa/pannelloVuoto.png".
    Usi getResource()? Invocato su quale Class?
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  4. #4
    Utente di HTML.it
    Registrato dal
    Jun 2008
    Messaggi
    396
    ecco cosa fa il backgroundedPanel:
    codice:
    public backgroundedPanel(String localURL)
        {
            super();
            try
            {this.img = ImageIO.read(getClass().getResource(localURL));}
            catch (IOException ex)
            {System.out.print("Impossibile leggere l'immagine per creare il pane \n");}
        }

  5. #5
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da Salinas
    ecco cosa fa il backgroundedPanel:
    codice:
    public backgroundedPanel(String localURL)
    
            {this.img = ImageIO.read(getClass().getResource(localURL));}
    Bene, nella stessa cartella dove c'è backgroundedPanel.class ci deve essere una cartella "mensa" con dentro le immagini.

    Questo vale sia per file "sciolti" nel file-system, sia all'interno di un jar.

    Però dallo stacktrace che hai postato si vede chiaramente:

    at mensa.presentation.backgroundedPanel.<init>(backgroundedPanel.java:16)

    Quindi backgroundedPanel è in un package mensa.presentation e se tu con "mensa/pannelloVuoto.png" intendevi quel package iniziale mensa .... è sbagliato.

    Se specifichi "mensa/pannelloVuoto.png" dovresti avere lungo il classpath:

    mensa/presentation/mensa/pannelloVuoto.png

    Se volevi mettere pannelloVuoto.png nel primo package mensa, devi caricare

    "/mensa/pannelloVuoto.png" (e il Class usato per invocare getResource potrebbe essere qualunque ... è indifferente)
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  6. #6
    Utente di HTML.it
    Registrato dal
    Jun 2008
    Messaggi
    396
    capito.
    Ho risolto, grazie

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.