Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2003
    Messaggi
    591

    aprire nuovo jframe cliccando Jtree

    Ciao a tutti, rieccomi con un nuovo quesito, che in buona sostanza si può tradurre in:
    Se ho generato un Jtree da una selezione da db come faccio ad istanziare un nuovo jframe in base alla selezione sull'albero?
    per semplificare : se clicco sull'indicazione anagrafico cliente come faccio ad instanziare la classe anagraficaclienti (che estende jframe)?

  2. #2
    Utente di HTML.it
    Registrato dal
    May 2003
    Messaggi
    591
    Nessuna seppur vaga idea se e come fare???
    o nin ze pò ffà?
    sono agli inizi, accetto consigli

  3. #3
    Utente di HTML.it L'avatar di morphy79
    Registrato dal
    Jun 2004
    Messaggi
    1,568

    Re: aprire nuovo jframe cliccando Jtree

    Originariamente inviato da stabi
    Ciao a tutti, rieccomi con un nuovo quesito, che in buona sostanza si può tradurre in:
    Se ho generato un Jtree da una selezione da db come faccio ad istanziare un nuovo jframe in base alla selezione sull'albero?
    per semplificare : se clicco sull'indicazione anagrafico cliente come faccio ad instanziare la classe anagraficaclienti (che estende jframe)?
    non ho capito... tu vuoi passare un ramo del jtree ad un jframe successivo ???
    odio chi parla di politica..
    anzi vorrei fondare un partito contro tutto ciò

  4. #4
    Utente di HTML.it
    Registrato dal
    May 2003
    Messaggi
    591
    vorrei cliccando su un elemento dell'albero far aprire un nuovo jframe (istanziare di una classe che estende jframe)

  5. #5
    Utente di HTML.it L'avatar di morphy79
    Registrato dal
    Jun 2004
    Messaggi
    1,568
    questo ti potrà essere utile...
    ogni mio nodo dell'albero rappresenta una classe... cliccando su un nodo, carico la classe selezionata e la riporto in una text area...

    l'esempio è simile al tuo... cliccando su una voce dell'albero apri un jframe e gli trasmetti l'oggetto recuperato dal nodo dell'albero...

    codice:
    // EVENTO DI SELEZIONE DEL FILE
    			jTree.addTreeSelectionListener(new javax.swing.event.TreeSelectionListener() { 
    				public void valueChanged(TreeSelectionEvent e) {    
    					DefaultMutableTreeNode node =(DefaultMutableTreeNode) jTree.getLastSelectedPathComponent();
    					Object nodeInfo = node.getUserObject();
    					NodoJTree ramoSelezionato = (NodoJTree) nodeInfo;
    					
    					// LETTURA DEL FILE
    					String tempString="";  
    					try {
    						File fileInput = new File("repository/" + ramoSelezionato.link);
    						jTextArea_Dettagli.setText(readFile(fileInput.getAbsolutePath()));
    						
    					} catch (FileNotFoundException e1) {
    						System.out.println();
    					} catch (IOException e2) {
    						e2.printStackTrace();
    					}
    
    				}
    			});
    odio chi parla di politica..
    anzi vorrei fondare un partito contro tutto ciò

  6. #6
    Utente di HTML.it
    Registrato dal
    May 2003
    Messaggi
    591
    Grazie, esempio molto interessante ma se seguissi esattamente questa strada dovrei rendere statica (scrivere io a manina il codice ) scrivendo per tutte i nodi e foglie dell'albero
    ( in realtà solo le foglie) una cosa del genere

    ...new DefaultMutableTreeNode(new miaclassse());

    e poi nel listener dell'evento ValueChanged una cosa simile a

    Object nodeInfo = node.getUserObject();
    if (node.isLeaf() && nodeInfo.toString()=="miaclasse") {
    miaclasse A = (miaclasse)nodeInfo;
    }

    io vorrei che l'albero fosse costruito leggendo una tabella del db in cui sulle foglie ho l'indicazione di quale classe instanziare

  7. #7
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Non capisco proprio dove sia il problema.
    Aggiungi al tuo JTree un TreeSelectionListener. Implementi il metodo valueChanged() e, in base al nodo che è stato selezionato, istanzi la classe giusta.
    Se nella foglia del JTree hai il nome della classe da istanziare puoi usare il metodo statico [v]forName()[/b] della classe Class per istanziare la classe:
    codice:
    public void calueChanged(TreeSelectionEvent tse) {
       JTree jt = (JTree) tse.getSource();
       String miaClasse = ...   // Ottengo il nome della classe da istanziare
       
       // Qui la carico e la istanzio
       Class.forName( miaClasse ).newInstance();
    }
    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

  8. #8
    Utente di HTML.it
    Registrato dal
    May 2003
    Messaggi
    591

    grazie ... mi sa che adesso ci siamo
    Class.forName( miaClasse ).newInstance();
    ecco cosa stavo cercando
    .....ma se avessi bisogno di passargli dei parametri?

    Non capisco proprio dove sia il problema.
    forse per te non è nulla ma per me che è pochissimo che seguo java sembra una montagna.
    java è potente ma non è affatto semplice iniziare a fare qualcosa di diverso che non siano i semplici esempi che ti propongono i vari manuali..

  9. #9
    Utente di HTML.it
    Registrato dal
    May 2003
    Messaggi
    591
    azz ..
    mi dà quest'errore in esecuzione!

    java.lang.ClassNotFoundException: provafinestre

    provafinestre è una classe che mandata in esecuzione direttamente funziona
    forse mi manca qualcosa che tu dai per scontato io sappia.
    questo è il codice:
    Codice PHP:
     public void valueChanged(TreeSelectionEvent e) {
                    
    DefaultMutableTreeNode node = (DefaultMutableTreeNode)
                                       
    tree.getLastSelectedPathComponent();

                    if (
    node == null) return;

                    
    Object nodeInfo node.getUserObject();
                    if (
    node.isLeaf()) {
                         try {
                            Class.
    forName"provafinestre" ).newInstance();
                        } catch (
    IllegalAccessException ex) {
                            
    ex.printStackTrace();
                        } catch (
    ClassNotFoundException ex) {
                            
    ex.printStackTrace();
                        } catch (
    InstantiationException ex) {
                            
    ex.printStackTrace();
                        }

                    } 
                } 

  10. #10
    Utente di HTML.it
    Registrato dal
    May 2003
    Messaggi
    591
    trovato, voleva anche il nome del package ie. test.provafinestre
    per il momento rigrazie e alla prossima ( a presto)

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.