Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2002
    Messaggi
    141

    [JAVA] Creare Tree menù

    Ciao a tutti, ho questo problema:
    di ritorno da una query ho una serie di campi che servono per comporre il mio tree menù e dei parametri da passare al click sulla voce di menu:
    mi spiego meglio:
    il tracciato dei dati che ritornano è così:
    codicemenu4,rigamenu4,descrizione4, etc fino a menu0 poi alla fine ho codicefunzione che è il parametro che mi deve tornare quando viene cliccata la voce.
    Il punto è questo, in codicemenu0 e riga0 trovo all'inizio le prime foglie del menù con dei parametri, se la foglia ha sotto un'altra foglia allora troverò in codicemenu1 la prima foglia e in codicemenu0 la seconda e così via.
    Alcune righe di menù sono doppie perchè differiscono solo per il parametro, quindi io dovrei creare una sola riga e passare tutti i parametri. Inoltre il menù superiore deve avere tutti i parametri anche dei sottostanti.
    Non sono sicuro di essere stato molto chiaro comunque ci tento.
    Grazie

  2. #2
    Utente di HTML.it L'avatar di morphy79
    Registrato dal
    Jun 2004
    Messaggi
    1,568
    1) devi crearti una classe es. PersonalNodo che contiene tutti i parametri riferiti al ndo del tuo menu ad albero ( descrizione, chiavi, link, icona ) etc...
    come questa per esempio :
    codice:
    public class NodeInfo {
    	
    	public String label;
    	public String url;
    
    	public NodeInfo(String label, String url) {
    		this.label = label;
    		this.url = url;
    	}
    
    }
    2) fai una classe che aggiunge gli oggetti di tipo nodo ( che crei man mano che recuperi i dati dal database ) al tuo jTree
    qualcosa tipo così:
    codice:
    DefaultMutableTreeNode top = new DefaultMutableTreeNode(new NodeInfo("Messaggi",""));
    DefaultMutableTreeNode nodoDaAggiungere = null;
    
    // ciclo che recupera valori da db, e per ognuno fai
    nodoDaAggiungere = new DefaultMutableTreeNode(new NodeInfo(nomeNodo,textValue));
    top.add(nodoDaAggiungere);


    3)fai un'ultima classe per personalizzzare il tuo menu ad albero, tipo questa :
    codice:
    import java.awt.Component;
    
    import javax.swing.ImageIcon;
    import javax.swing.JTree;
    import javax.swing.tree.DefaultMutableTreeNode;
    import javax.swing.tree.DefaultTreeCellRenderer;
    
    public class PersonalizzaJtree extends DefaultTreeCellRenderer {
    	
        private ImageIcon tutorialIcon;
    	private ImageIcon documentOut;
    	private ImageIcon documentIn;
    	private ImageIcon elencoMessaggi;
    	private ImageIcon error;
    	private ImageIcon anonima;
    		
        public PersonalizzaJtree() {
    		elencoMessaggi = new javax.swing.ImageIcon(getClass().getResource("/images/document.gif"));
    		documentOut =  new javax.swing.ImageIcon(getClass().getResource("/images/documentOut.gif"));
    		documentIn =  new javax.swing.ImageIcon(getClass().getResource("/images/documentIn.gif"));
    		error =  new javax.swing.ImageIcon(getClass().getResource("/images/error.gif"));
    		anonima =  new javax.swing.ImageIcon(getClass().getResource("/images/anonima.gif"));
        }
            
    	public Component getTreeCellRendererComponent(
    		JTree tree,
    		Object value,
    		boolean sel,
    		boolean expanded,
    		boolean leaf,
    		int row,
    		boolean hasFocus) {
    
    		super.getTreeCellRendererComponent(
    			tree,
    			value,
    			sel,
    			expanded,
    			leaf,
    			row,
    			hasFocus);
    			
    		// PERSONALIZZAZIONE
    		personalizzaRami(value);
    
    		return this;
    	}
    
    	protected void personalizzaRami(Object value) {
    		DefaultMutableTreeNode node = (DefaultMutableTreeNode) value;
    		NodeInfo nodeInfo = (NodeInfo) (node.getUserObject());
    		
    		setText(nodeInfo.label);
    		
    		// se è messaggi fai icona cartella
    		if( nodeInfo.label.equals( "Messaggi" ) )
    			setIcon( elencoMessaggi );
    		
    		// controllo se valido	
    		else if( nodeInfo.label.indexOf("Messaggio non identificato :")>= 0 )
    			setIcon( error );
    				
    		// controllo se è risposta anonima	
    		else if( nodeInfo.label.indexOf("Risposta anonima :")>= 0 )
    			setIcon( anonima );	
    	
    		// messaggio inviato
    		else if( nodeInfo.label.indexOf("Risposta :")>= 0 )
    			setIcon( documentIn );
    			
    		// messaggio ricevuto
    		else if( nodeInfo.label.indexOf("Messaggio :")>= 0 )
    			setIcon( documentOut );
    
    	}
    }

    spero di esserti stato di aiuto, per chiarimenti sono qua
    odio chi parla di politica..
    anzi vorrei fondare un partito contro tutto ciò

  3. #3
    Utente di HTML.it
    Registrato dal
    Mar 2002
    Messaggi
    141
    non mi è molto chiaro, inoltre per il tree menu io sto usando un javascript; comunque io devo prima leggere tutto il recordset perchè ho più righe dello stesso menu?
    Quindi poi creare le varie foglie, forse se ti faccio vedere cosa mi ritorna riesci capire meglio, posso spedirti un file? Se sì dove?

  4. #4
    Utente di HTML.it L'avatar di morphy79
    Registrato dal
    Jun 2004
    Messaggi
    1,568
    ...allora è diverso.. cmq per il menu ad albero javascript guarda qui..

    http://www.destroydrop.com/javascripts/tree/

    poi lo integri tranquillamente con il tuo codice java...
    secondo me è il menu ad albero più fico che c'è in giro ed è molto semplice da usare
    odio chi parla di politica..
    anzi vorrei fondare un partito contro tutto ciò

  5. #5
    Utente di HTML.it
    Registrato dal
    Mar 2002
    Messaggi
    141
    ok grazie per il menu, spero di non romperti troppo, ma il mio problema è più su come preparare i dati per creare il menù;
    come faccio a salvarmi i dati che leggo da db e se ho già un valore aggiungere solo il parametro (magari separandolo con virgola) e continuare?

  6. #6
    Utente di HTML.it L'avatar di morphy79
    Registrato dal
    Jun 2004
    Messaggi
    1,568
    nel menu che ti ho consigliato c'è la possibilità di passare per ogni riga più paramentri, senza bisogno di separarli con la virgola, fa tutto lui... tu devi solo intervenire sul javascript interno per recuperarteli, poi puoi farci tutto quello che vuoi
    odio chi parla di politica..
    anzi vorrei fondare un partito contro tutto ciò

  7. #7
    Utente di HTML.it
    Registrato dal
    Mar 2002
    Messaggi
    141
    ok grazie, ho visto quello che fa, ma a me rimane il problema di come mettere i dati insieme per passarli al javascript.
    Cosa devo fare caricarmi un'array interno con i dati della query?, poi posso cercare un valore in un'array? Purtroppo non conosco ancora bene java è da poco che lo uso.
    Grazie


  8. #8
    Utente di HTML.it
    Registrato dal
    Mar 2002
    Messaggi
    141
    Questo è quello che mi ritorna la query, se copi tutto questo che c'è sotto e lo incolli in excel vedi come è fatto.
    Grazie


    COD_MENU_L4 RIGA_MENU_L4 DESCRIZIONE_L4 COD_MENU_L3 RIGA_MENU_L3 DESCRIZIONE_L3 COD_MENU_L2 RIGA_MENU_L2 DESCRIZIONE_L2 COD_MENU_L1 RIGA_MENU_L1 DESCRIZIONE_L1 COD_MENU_L0 RIGA_MENU_L0 DESCRIZIONE_L0 INTER_INTERROGAZ
    1 3 CC 134
    1 3 CC 15
    1 3 CC 4
    1 3 CC 135
    1 4 AN 202
    1 4 AN 51
    1 4 AN 6
    1 4 AN 5
    1 7 PO 16
    1 7 PO 14
    1 8 DR 903
    1 8 DR 902
    1 8 DR 901
    1 8 DR 904
    1 10 RA 146
    1 10 RA 140
    1 10 RA 237
    1 10 RA 132
    1 10 RA 142
    1 10 RA 236
    1 10 RA 141
    1 11 BI 931
    1 11 BI 930
    1 11 BI 929
    1 11 BI 932
    1 12 HT 309
    1 12 HT 303
    1 12 HT 308
    1 12 HT 302
    1 12 HT 307
    1 12 HT 301
    1 12 HT 306
    1 12 HT 300
    1 12 HT 305
    1 12 HT 310
    1 12 HT 304
    1 14 RG 279
    1 3 CC 2 1 ST 113
    1 3 CC 2 1 ST 129
    1 3 CC 2 1 ST 102
    1 3 CC 2 1 ST 240
    1 3 CC 2 1 ST 114
    1 3 CC 2 1 ST 130
    1 3 CC 2 1 ST 103
    1 3 CC 2 1 ST 119
    1 3 CC 2 1 ST 147
    1 3 CC 2 1 ST 108
    1 3 CC 2 1 ST 124
    1 3 CC 2 1 ST 239
    1 6 RV 3 2 MV 520
    1 10 RA 5 1 SA 225
    1 10 RA 5 1 SA 214
    1 10 RA 5 2 MV 235
    1 2 AF 6 1 TN 7 1 AG 47
    1 2 AF 6 1 TN 7 2 SA 46
    1 2 AF 6 1 TN 7 3 MV 219
    1 2 AF 6 1 TN 7 3 MV 218
    1 2 AF 6 2 GP 8 3 MV 288
    1 2 AF 6 4 BS 10 1 AG 210
    1 2 AF 6 4 BS 10 2 SA 212
    1 6 RV 3 2 MT 12 1 ST 540

  9. #9
    Utente di HTML.it L'avatar di morphy79
    Registrato dal
    Jun 2004
    Messaggi
    1,568
    Originariamente inviato da vgiani
    ok grazie, ho visto quello che fa, ma a me rimane il problema di come mettere i dati insieme per passarli al javascript.
    Cosa devo fare caricarmi un'array interno con i dati della query?, poi posso cercare un valore in un'array? Purtroppo non conosco ancora bene java è da poco che lo uso.
    Grazie

    meglio una Hashtable che array !!!
    odio chi parla di politica..
    anzi vorrei fondare un partito contro tutto ciò

  10. #10
    Utente di HTML.it
    Registrato dal
    Mar 2002
    Messaggi
    141
    ok cerco come si usano le hashtable e ci provo.
    saluti

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.