Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    Java passaggio di array in diversa classe

    Salve a tutti,
    Intanto volevo dire che sono nuovo e che stò cercando di capire come funziona il tutto al meglio.
    Il mio problema consiste nel passare un array in un'altra classe, di seguito riporto il codice:

    codice:
    public class gestione_Panel extends JPanel implements ActionListener{
    main_Panel m; int book_idx=0;
    Book[] b = new Book[50]; 
    public gestione_Panel(
    ....
    }
    public void view_book(){
    ....
    m.setBook(b, book_idx);
    }
    }

    Nella classe main_Panel userò l'array in questo modo:

    codice:
    public class main_Panel extends JPanel implements ActionListener{
    int book_idx=0; Book[] b = new Book[50];
    
    public main_Panel(JFrame f_main){
    .....
    }
    
    public void setBook(Book []b,int book_idx){ this.b = b;
    this.book_idx = book_idx;
    }
    
    
    }

    NON MI SEGNALA ERRORI DI COMPILAZIONE MA NEL MOMENTO DELL' ESECUZIONE APPAIONO DIVERSI ERRORI
    Ultima modifica di LeleFT; 09-01-2015 a 17:52 Motivo: Aggiunti i tag CODE

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,305
    Se non ci dici anche quali errori appaiono in esecuzione, diventa più difficile aiutarti....
    Dal poco codice che hai postato potrebbe essere una NullPointerException: tu, infatti, dichiari l'oggetto "m" di tipo "main_Panel" nella prima classe, ma non si vede alcuna istanziazione di tale oggetto... che però usi all'interno del metodo "view_book()".

    PS: Il codice (e, in genere, tutto ciò che va mantenuto in formattazione) va racchiuso all'interno degli appositi tag [CODE] .. [/CODE], così da mantenere formattazione ed indentazione. Ho corretto io.

    PPS: le convenzioni Java dicono che i nomi delle classi e delle interfacce vanno scritti con l'iniziale Maiuscola; i nomi delle variabili e dei metodi vanno scritti in "camelCase", cioè con la prima iniziale minuscola e le iniziali delle altre parole (attaccate) maiuscola (come, appunto, in "camelCase").


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  3. #3
    Ciao, intanto grazie per le correzioni e suggerimenti, ti posto di seguito l'errore che mi dà a tempo di esecuzione:

    Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
    at gestione_Panel.view_book(gestione_Panel.java:121)
    at gestione_Panel.actionPerformed(gestione_Panel.java :193)
    at javax.swing.AbstractButton.fireActionPerformed(Unk nown Source)
    at javax.swing.AbstractButton$Handler.actionPerformed (Unknown Source)
    at javax.swing.DefaultButtonModel.fireActionPerformed (Unknown Source)
    at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
    at javax.swing.plaf.basic.BasicButtonListener.mouseRe leased(Unknown Source)
    at java.awt.AWTEventMulticaster.mouseReleased(Unknown Source)
    at java.awt.Component.processMouseEvent(Unknown Source)
    at javax.swing.JComponent.processMouseEvent(Unknown Source)
    at java.awt.Component.processEvent(Unknown Source)
    at java.awt.Container.processEvent(Unknown Source)
    at java.awt.Component.dispatchEventImpl(Unknown Source)
    at java.awt.Container.dispatchEventImpl(Unknown Source)
    at java.awt.Component.dispatchEvent(Unknown Source)
    at java.awt.LightweightDispatcher.retargetMouseEvent( Unknown Source)
    at java.awt.LightweightDispatcher.processMouseEvent(U nknown Source)
    at java.awt.LightweightDispatcher.dispatchEvent(Unkno wn Source)
    at java.awt.Container.dispatchEventImpl(Unknown Source)
    at java.awt.Window.dispatchEventImpl(Unknown Source)
    at java.awt.Component.dispatchEvent(Unknown Source)
    at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
    at java.awt.EventQueue.access$200(Unknown Source)
    at java.awt.EventQueue$3.run(Unknown Source)
    at java.awt.EventQueue$3.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPri vilege(Unknown Source)
    at java.security.ProtectionDomain$1.doIntersectionPri vilege(Unknown Source)
    at java.awt.EventQueue$4.run(Unknown Source)
    at java.awt.EventQueue$4.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPri vilege(Unknown Source)
    at java.awt.EventQueue.dispatchEvent(Unknown Source)
    at java.awt.EventDispatchThread.pumpOneEventForFilter s(Unknown Source)
    at java.awt.EventDispatchThread.pumpEventsForFilter(U nknown Source)
    at java.awt.EventDispatchThread.pumpEventsForHierarch y(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.run(Unknown Source)

  4. #4
    Scusami, ma sono alle prime armi in Java, cosa intendi quando dici istanziare m?

    Grazie

  5. #5
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,305
    Osserva attentamente le prime due righe dello stackTrace:

    codice:
    Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
        at gestione_Panel.view_book(gestione_Panel.java:121)

    La prima riga ti dice qual è il problema: NullPointerException... stai cercando di usare una variabile (oggetto) che non è inizializzata.
    La seconda riga ti dice precisamente dove viene sollevato quel problema. Il problema viene sollevato nel file "gestione_Panel.java" alla riga 121 (che corrisponde ad una riga del metodo view_book() ).

    Per quel che ho detto prima, tu hai dichiarato una variabile di nome "m" di tipo "mainPanel". Ma non l'hai inizializzata. Cioè non ci hai assegnato alcun valore. Gli oggetti si istanziano con l'istruzione "new", quindi da qualche parte nel tuo codice mi aspetterei di vedere:

    codice:
    m = new main_Panel( qualcosa );

    Dove "qualcosa" dovrebbe essere il riferimento ad una finestra (JFrame), visto che il costruttore di tale classe vuole, appunto, un parametro di quel tipo.

    Mi domando, però, una cosa: se sei alle prime armi e hai ancora difficoltà a gestire una NullPointerException (che è una delle eccezioni più comuni, più ricorrenti e più "facili" da gestire), perchè ti stai già buttando sul mondo delle GUI che richiede competenze ben più approfondite di tanti (tanti!) altri concetti?


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  6. #6
    Grazie, ho risolto.
    Gentilissimo e velocissimo

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 © 2024 vBulletin Solutions, Inc. All rights reserved.