Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2012
    Messaggi
    51

    [Java - Bean] Problema implementazione JPanel esterno

    Allora... Premesso che, se chiedo aiuto qui, sto proprio alla frutta dato che di solito bene o male riesco a cavarmela in tutti i muri che il Java mi mette davanti per capirne le varie metodologie. Questa volta il problema è NetBeans... Vi spiego, cercherò di essere più dettagliato possibile, se dimentico di precisare qualcosa fatemelo notare. >.<
    Di solito per quanto riguarda i vari meccanismi profondi del codice vado a scrivere a manina tutte le varie operazioni che servono, poi NetBeans aiuta un pochino riguardo l'interfaccia grafica e il codice per creare l'interfaccia non lo sto molto a guardare... Conosco le cose buone per l'utilizzo tipo i vari setText, setVisible, setBackground e così via.
    Da questo errore:
    The component cannot be instantiated. Please make sure it is a JavaBeans component.

    Che ho fatto per arrivare al problema, vi spiego.
    1) Ho creato il meccanismo di fondo per criptare e decriptare stringhe. Ovviamente testo per vedere se funziona tutto come dovrebbe andando a fare vari test con System.out vari ed eventuali.
    2) Per sfizio volevo implementare l'interfaccia in un JTabbed Pane all'interno di un altro programmino più ampio (che chiamiamo ToolsJFrame per intenderci). Il JPanel si trova in un pacchetto diverso ma nello stesso progetto rispetto al ToolsJFrame che lo deve avere.
    3) Allora creo il JPanel che verrà contenuto nel JTabbedPane del ToolsJFrame principale, inserisco il JPanel cliccando col destro sul JTabbedPane e su Add From Palette-> Beans -> Choose Bean.
    4) Il JPanel del criptatore quindi si vede nel JTabbedPane del programma ToolsJFrame più grande.
    5) Lavoro sul JPanel Criptatore in modo che collabori con il cuore del programma e tutti i suoi metodi (Cripta, Decripta, Pesca Criptaggio, ecc ecc..). Da tenere presente che il motore interno del programmino di criptaggio lancia un'eccezione FileNotFoundException.
    5b) Aggiungo che dato che non mi faceva incapsulare con NetBeans l'import del JPanel nel ToolsJFrame, sono andato a modificare manualmente (con Notepad++ per intenderci) la creazione dell'oggetto con il blocco try e catch (dato che internamente il JPanel lanciava nel costruttore una FileNotFoundException).
    6) vado a vedere tempo dopo in cui il JPanel è quasi pronto e noto con stupore che il ToolsJFrame principale da errore (nonostante io avessi più volte mandato in run il ToolsJFrame per provare il JPanel), non mi segna la riga di errore però, nonostante andando a guardare nel sorgente, dando errore su una parentesi graffa ma nel codice auto generato da NetBeans (il JPanel che volevo importare era però corretto e non dava errori). quindi succede che NetBeans mi chieda se voglio o Allow Edit oppure View Only (non mi ricordo con precisione il motivo).
    7) Da quel punto in poi va tutto a scatafascio. Il ToolsJFrame perde il collegamento con il JPanel che avevo inserito. Da allora quando tento di fare l'import del JPanel dentro al ToolsJFrame mi da questo errore:
    The component cannot be instantiated. Please make sure it is a JavaBeans component.
    8) Panico. Riprovo varie volte, cerco su internet i motivi di questo sfacelo e non scopro niente che mi possa aiutare seriamente, creo prima un JavaBean per vedere se lo implementa che però non ha un'interfaccia grafica e quindi non so come usarlo D: ed ho letto che il JavaBean sta sotto i component quindi implementando un JPanel dovrei implementare anche quelle funzionalità di default.
    9) Creo un nuovo JPanel vuoto e c'inserisco un solo pulsante per vedere se funziona ancora almeno così. Quindi importo il JPanel appena creato come ho fatto prima (Add From Palette-> Beans -> Choose Bean) ma questa volta pure che si crea il JPanel dentro al JTabbed Pane del ToolsJFrame non si visualizza il semplice JButton interno creato di prova...
    10) Provo facendo anche vari Clean e Build tra un passaggio e l'altro perché da quanto ho visto a volte dava problemi di questo tipo ma anche così niente.
    11) Provo a togliere qualsiasi parametro sia esterno ai metodi che interno al costruttore, tolgo il throw dell'eccezione perché da errore d'incapsulamento nell'ToolsJFrame per vedere se così va ma niente, da lo stesso errore cannot instantiated.

    Se avete qualche guidina che spieghi quali sono i parametri must di un JavaBean (se ne ho toppato qualcuno, anche se ho guardato su internet per scovare quale poteva essere) o comunque il motivo di tanta distruzione ad un programma su cui lavoro da 2 settimane (parlando del motore interno, non dell'interfaccia, ovviamente) vi sarei grato.

    Vi posto lo scheletro, le componenti usate e il costruttore del JPanel famigerato (quello che sto tentando di transformare in JavaBean):
    P.S.: Non l'ho inserito tutto lo scheletro perché sforavo i 13000 caratteri. Se vi serve altro basta farmelo sapere.

    codice:
    package [package].[package].ecc;
    
    import java.awt.Color;
    import java.io.FileNotFoundException;
    import javax.swing.JOptionPane;
    /**
     * @author User
     */
    public class ImmagazzinatoreGui extends javax.swing.JPanel {
        public String fileName = "fileCriptato.xml";
        public String DIRECTORY = "";
    /** Creo l'oggetto del motore interno **/
        Immagazzinatore immagazzina = new Immagazzinatore(file);
    /** Ho provato sia creando l'oggetto Immagazzinatore qua che direttamente dentro ai metodi incapsulandolo dentro try e catch.
    immagazzina lancia un'eccezione FileNotFoundException **/
    	/**...eccetera...**/
    
        /** Creates new form ImmagazzinatoreGui */ 
    	/** ho provato anche lasciando il costruttore vuoto (senza throws e senza parametri) ma non funzionava lo stesso, dando errore cannot instantiated **/
        public ImmagazzinatoreGui() throws FileNotFoundException {
            initComponents();
            controllaPopolamento();
            nascondiAll();
        }
    
        @SuppressWarnings("unchecked")
        // <editor-fold defaultstate="collapsed" desc="Generated Code">                          
        private void initComponents() {
    	/** non entrava nel Thread, sono i componenti generati di Default da NetBeans 
    se vi servono ditemelo che li aggiungo **/
            );
        }// </editor-fold>                        
    
        private void copiaPasswordButtonActionPerformed(java.awt.event.ActionEvent evt) {                                                    
            // TODO add your handling code here:
        }                                                   
    
        private void newPassButtonActionPerformed(java.awt.event.ActionEvent evt) {                                              
            // TODO add your handling code here:
        }                                             
    
        private void inChiaroToggleButtonMouseClicked(java.awt.event.MouseEvent evt) {
        }                                                 
    
        private void copiaPasswordButtonMousePressed(java.awt.event.MouseEvent evt) {
        }                                                
    	
    	private void controllaPopolamento() throws FileNotFoundException {
        }
    
       private void nascondiAll() {
    
       }
    
        // Variables declaration - do not modify                     
        private javax.swing.JButton accediMagazzinoButton;
        private javax.swing.JButton cancellaPasswordButton;
        private javax.swing.JButton copiaPasswordButton;
    	/** eccetera **/
        // End of variables declaration      
    
    /** vari get e set generati con NetBeans **/
    Grazie infinite. Sia che abbiate la soluzione sia che almeno proviate ad aiutarmi.

  2. #2
    Utente di HTML.it L'avatar di progAnd
    Registrato dal
    Jan 2012
    Messaggi
    119
    1) Hai provato a togliere il throws FileNotFoundException? Netbeans vuole che il Bean abbia un costruttore vuoto che non lanci eccezioni
    2) Sei sicuro che non avvengano eccezioni durante l'inizializzazione del componente? Quando Netbeans aggiunge un bean prova ad inizializzarlo.
    3) L'ultima volta che ho modificato a mano un codice generato da NetBeans è stato un disastro ed ho dovuto cancellare la classe e riscriverla da zero per fargliela riprendere...

    Ciao

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2012
    Messaggi
    51
    1) Si, ho provato a svuotare il costruttore di tutti i metodi interni ma niente.
    2) Se da eccezioni non lo so, dato che quando tento d'importare il JPanel l'unica cosa che fa è apparire una finestrella con quell'errore citato sopra. Non dice altro (vera pecca di questa cosa dato che con un minimo d'informazioni potevo almeno cavarmela).
    3) Spero di non arrivare a questa soluzione dato che sono parecchi pulsanti e componenti... E pensa che molti sono multifunzione dato che ad esempio un pulsante passa da "Modifica" a "Salva Modifica" per evitare numeri esorbitanti di bottoni.
    Il codice l'ho dovuto modificare a mano perché Il motore del JPanel lancia l'eccezione e il componente importato nel ToolsJFrame ero obbligato ad incapsularlo... Cliccavo sulla lampadina con il suggerimento ma dato che si trattava di codice non modificabile non metteva in atto l'incapsulamento da solo. Una vera e propria trappola per topi...

    Grazie per aver risposto.

  4. #4
    Utente di HTML.it L'avatar di progAnd
    Registrato dal
    Jan 2012
    Messaggi
    119
    Originariamente inviato da Ken90
    2) Se da eccezioni non lo so, dato che quando tento d'importare il JPanel l'unica cosa che fa è apparire una finestrella con quell'errore citato sopra. Non dice altro (vera pecca di questa cosa dato che con un minimo d'informazioni potevo almeno cavarmela).
    Prova a commentare tutto il costruttore lasciandolo vuoto. Se va a buon fine prova ad aggiungere all'inizio:
    codice:
    super();
    Se non va a buon fine, c'è un'eccezione che viene lanciata durante l'inizializzazione. In tal caso la cosa è molto complessa, visto che non ti dà indicazioni: l'unica cosa è provare a commentare e decommentare fino a trovare la riga incriminata.
    3) Spero di non arrivare a questa soluzione dato che sono parecchi pulsanti e componenti... E pensa che molti sono multifunzione dato che ad esempio un pulsante passa da "Modifica" a "Salva Modifica" per evitare numeri esorbitanti di bottoni.
    Il codice l'ho dovuto modificare a mano perché Il motore del JPanel lancia l'eccezione e il componente importato nel ToolsJFrame ero obbligato ad incapsularlo... Cliccavo sulla lampadina con il suggerimento ma dato che si trattava di codice non modificabile non metteva in atto l'incapsulamento da solo. Una vera e propria trappola per topi...
    Che era quello che era capitato a me

    Ciao

  5. #5
    Utente di HTML.it
    Registrato dal
    Jan 2012
    Messaggi
    51
    Costruttore completamente vuoto, ho tolto anche le inizializzazioni esterne a metodi giusto per esagerare. Ho tolto gli errori inizializzando in ogni metodo la classe cuore del programma che cripta, anche se dubito che così funzionerebbe, ma giusto per togliere tutti quelle sottolineature rosse.
    Niente, da sempre lo stesso errore, non può essere instanziato, ho provato anche a fare un clean e rebuild a casaccio e per disperazione.

    Costruttore vuoto:
    codice:
    public ImmagazzinatoreGui() { 
    }
    I vari blocchi try e catch inseriti dovunque venga richiamato "immagazzina" (la classe motore interno):
    codice:
        Immagazzinatore immagazzina = null;
            try {
                immagazzina = new Immagazzinatore(getFile());
            } catch (FileNotFoundException ex) {
                System.out.println(ex);
            }
    Sempre lo stesso errore..

    P.S.: Ho scoperto che quando lancio il programma principale (ToolsJFrame) mi viene lanciato anche il programma di criptazione (ImmagazzinatoreGui) che però da errore. Il fatto che nel ToolsJFrame ci sia implementato l'ImmagazzinatoreGui non è segnalato da nessuna parte... Non c'è in nessun albero ne in altro.
    Questo è un vero e proprio bug di NetBeans, grande come una casa. Anche perché non è che uno che si mette a scriptare in Java deve essere per forza un programmatore esperto che sa tutti i come e i perché dei Beans senza manco sapere che sono implementati.
    Comunque il nodo non è ancora venuto al pettine. Devo capire ora come farlo funzionare. (ma poi nemmeno si vedrà nell'interfaccia dato che non mi permette d'inserirlo nel toolsframe).


    P.S.2: Ha senso inizializzare Immagazzinatore dentro ogni metodo (che in pratica sarebbe inserire 5/6 try-catch dentro i vari metodi che richiamano)? D: Mi pare una boiata assurda... Ne sto uscendo pazzo...

    P.S.3: Non c'è un modo alternativo per slegare un JPanel da un JFrame padre? Invece di usare i Bean? Mi sta venendo una voglia incontrollata di schiaffare brutalmente il JPanel come componente nel JFrame e chi si è visto si è visto...

  6. #6
    Utente di HTML.it L'avatar di progAnd
    Registrato dal
    Jan 2012
    Messaggi
    119
    Originariamente inviato da Ken90
    P.S.: Ho scoperto che quando lancio il programma principale (ToolsJFrame) mi viene lanciato anche il programma di criptazione (ImmagazzinatoreGui) che però da errore. Il fatto che nel ToolsJFrame ci sia implementato l'ImmagazzinatoreGui non è segnalato da nessuna parte... Non c'è in nessun albero ne in altro.
    Questo è un vero e proprio bug di NetBeans, grande come una casa. Anche perché non è che uno che si mette a scriptare in Java deve essere per forza un programmatore esperto che sa tutti i come e i perché dei Beans senza manco sapere che sono implementati.
    Se ti dico di passare ad Eclipse, mi picchi?
    (c'è sia Jigloo che WindowBuilder per creare le interfacce in eclipse...)
    Comunque il nodo non è ancora venuto al pettine. Devo capire ora come farlo funzionare. (ma poi nemmeno si vedrà nell'interfaccia dato che non mi permette d'inserirlo nel toolsframe).
    Mi sto chiedendo se il problema non stia da un'altra parte, anche se è segnalato sul JPanel...
    P.S.2: Ha senso inizializzare Immagazzinatore dentro ogni metodo (che in pratica sarebbe inserire 5/6 try-catch dentro i vari metodi che richiamano)? D: Mi pare una boiata assurda... Ne sto uscendo pazzo...
    No, non ha senso ed è una boiata, ma è un modo per cercare di capirci qualche cavolo...
    P.S.3: Non c'è un modo alternativo per slegare un JPanel da un JFrame padre? Invece di usare i Bean? Mi sta venendo una voglia incontrollata di schiaffare brutalmente il JPanel come componente nel JFrame e chi si è visto si è visto...
    I JPanel sono slegati dal JFrame fin quando non vengono legati da programma. I JPanel sono Bean. Netbeans è odioso.
    Potresti postarmi il codice in cui viene inserito il JPanel che dà problemi?

    Ciao

  7. #7
    Utente di HTML.it
    Registrato dal
    Jan 2012
    Messaggi
    51
    Brutte notizie, l'errore che veniva segnalato (tentando di lanciare il ToolsJFrame) riguardava 2 metodi che ho tentato d'inizializzare esternamente al JPanel creando l'oggetto ImmagazzinatoreGui (il JPanel) e lanciano 2 metodini che servivano solo per far partire bene il JPanel. Li ho cancellati anche perché erano utili si ma per far partire il programma erano un problema secondario. Ora parte ma senza nessun JPanel che mi occorra.
    In realtà non importa un bel niente...
    L'errore potrebbe stare nei file .form che vengono creati per le configurazioni di JPanel e JFrame? Però lì come si pesca allora l'errore? E' tutta roba generata in automatico e in chissà quale formattazione...

    Riguardo Eclipse, è gratuito (giusto per sapere)? Comunque vorrei tentare di finire questo programma con NetBeans dato che è bello grande ormai e a passarlo su Eclipse non so se potrebbe leggersi i file ".form".


    Codice di import (importa un tab nella Tabbed Pane vuoto):

    codice:
            immagazzinatoreGui1 = new idrobytetools.plugins.magazzinopassword.ImmagazzinatoreGui();
    		
    		.....
    		
    
                    javax.swing.GroupLayout immagazzinatoreGui1Layout = new javax.swing.GroupLayout(immagazzinatoreGui1);
                    immagazzinatoreGui1.setLayout(immagazzinatoreGui1Layout);
                    immagazzinatoreGui1Layout.setHorizontalGroup(
                        immagazzinatoreGui1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                        .addGap(0, 489, Short.MAX_VALUE)
                    );
                    immagazzinatoreGui1Layout.setVerticalGroup(
                        immagazzinatoreGui1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                        .addGap(0, 221, Short.MAX_VALUE)
                    );
    
                    PluginsjTabbedPane.addTab("tab4", immagazzinatoreGui1);

  8. #8
    Utente di HTML.it L'avatar di progAnd
    Registrato dal
    Jan 2012
    Messaggi
    119
    Originariamente inviato da Ken90
    Brutte notizie, l'errore che veniva segnalato (tentando di lanciare il ToolsJFrame) riguardava 2 metodi che ho tentato d'inizializzare esternamente al JPanel creando l'oggetto ImmagazzinatoreGui (il JPanel) e lanciano 2 metodini che servivano solo per far partire bene il JPanel. Li ho cancellati anche perché erano utili si ma per far partire il programma erano un problema secondario. Ora parte ma senza nessun JPanel che mi occorra.
    In realtà non importa un bel niente...
    L'errore potrebbe stare nei file .form che vengono creati per le configurazioni di JPanel e JFrame? Però lì come si pesca allora l'errore? E' tutta roba generata in automatico e in chissà quale formattazione...
    La vedo bigia con Netbeans...
    Riguardo Eclipse, è gratuito (giusto per sapere)? Comunque vorrei tentare di finire questo programma con NetBeans dato che è bello grande ormai e a passarlo su Eclipse non so se potrebbe leggersi i file ".form".
    Eclipse è gratuito, Jigloo è gratuito per uso non commerciale, WindowBuilder (che però non ho provato) è gratuito. Jigloo e WindowBuilder sono plug-in per Eclipse.
    I .form sono un'invenzione di Netbeans che, secondo me, serve solo a complicare la vita agli utenti. Comunque Eclipse è in grado di importare tutti i progetti Netbeans (Jigloo e WindowBuilder competono la "parte grafica").
    Codice di import (importa un tab nella Tabbed Pane vuoto):

    codice:
            immagazzinatoreGui1 = new idrobytetools.plugins.magazzinopassword.ImmagazzinatoreGui();
    		
    		.....
    		
    
                    javax.swing.GroupLayout immagazzinatoreGui1Layout = new javax.swing.GroupLayout(immagazzinatoreGui1);
                    immagazzinatoreGui1.setLayout(immagazzinatoreGui1Layout);
                    immagazzinatoreGui1Layout.setHorizontalGroup(
                        immagazzinatoreGui1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                        .addGap(0, 489, Short.MAX_VALUE)
                    );
                    immagazzinatoreGui1Layout.setVerticalGroup(
                        immagazzinatoreGui1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                        .addGap(0, 221, Short.MAX_VALUE)
                    );
    
                    PluginsjTabbedPane.addTab("tab4", immagazzinatoreGui1);
    Non conosco il GroupLayout, ma mi sembra corretto...
    Non so più che pensare...

    Ciao

  9. #9
    Utente di HTML.it
    Registrato dal
    Jan 2012
    Messaggi
    51
    Allora mi do alla droga pesante (un modo di dire D: non mi drogo).

    Comunque per ora lascio perdere. Ritenterò più in la con qualche altro programmino in java.
    Grazie infinite per la disponibilità.
    La prossima volta tenterò con eclipse e vediamo se andrà meglio... >.<

    P.S.: Ho buttato tutto il Jpanel dentro al JFrame e l'ho fatto funzionare rozzamente. XD

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.