Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 19

Discussione: utilizzo JTree

  1. #1
    Utente di HTML.it
    Registrato dal
    Aug 2008
    Messaggi
    29

    utilizzo JTree

    Buongiorno a tutti,
    volevo chiedervi un consiglio. Ho creato un JTree e mi piacerebbe che quando questo viene visualizzato tutti i nodi fossero estesi invece che farlo io manualmente.
    Ho provato questa soluzione:

    for(int i=0; i<=nodiGruppi.size(); i++)
    {
    albero.expandRow(i);
    }

    ma non funziona, mi estende un solo nodo.
    Potete aiutarmi. Grazie.

  2. #2
    Utente di HTML.it
    Registrato dal
    Aug 2008
    Messaggi
    29
    Ho risolto. ho fatto uno stupido errore:

    for(int i=0; i<albero.getRowCount(); i++)
    {
    albero.expandRow(i);
    }

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2008
    Messaggi
    142
    Utilizzo lo stesso post visto che l'argomento è quello.

    Volevo cambiare l'icona del JTree, ho trovato un esempio ma non viene caricata l'immagine ma si vede solo uno spazio bianco.

    Qualcuno saprebbe dirmi qual'è il problema? Immagine troppo grande?
    A proposito quanto dovrebbe essere? Come formato ? Solo gif? o prende anche jpg ?

    Grazie!

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da som
    Qualcuno saprebbe dirmi qual'è il problema? Immagine troppo grande?
    A proposito quanto dovrebbe essere? Come formato ? Solo gif? o prende anche jpg ?
    Con cosa hai caricato la immagine? (ImageIO? Toolkit? altro?)
    E che path hai specificato? (specifica di file? risorsa tramite getResource() di Class?)

    Insomma ... le possibilità sono molte!
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    Utente di HTML.it
    Registrato dal
    May 2008
    Messaggi
    142
    Io ho creato l'icona in questo modo:

    codice:
    ImageIcon leafIcon = new ImageIcon("immagine.jpg");
    mi sa tanto che è questo il problema :master:

    La cosa strana è che il testo del nodo viene spostato come se l'immagine venisse caricata.

    Grazie.

  6. #6
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da som
    codice:
    ImageIcon leafIcon = new ImageIcon("immagine.jpg");
    mi sa tanto che è questo il problema
    Non c'è nulla di sbagliato in questo .... semmai l'unica nota è che il path è "relativo" .... relativo alla directory corrente.
    Quindi: quale è la directory corrente quando avvii l'applicazione? (questo dipende da come/dove la avvii). Tutto lì.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  7. #7
    Utente di HTML.it
    Registrato dal
    May 2008
    Messaggi
    142
    Inserisco il percorso relativo perchè l'immagine è nella cartella del progetto!


  8. #8
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da som
    Inserisco il percorso relativo perchè l'immagine è nella cartella del progetto!
    No ... non hai capito. Come avvii la applicazione?? Se a mano da prompt dei comandi la directory corrente perlomeno sai/puoi scegliere quale è. Se da un IDE ... non lo so quale è la directory corrente ... dipende dall'IDE.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  9. #9
    Utente di HTML.it
    Registrato dal
    May 2008
    Messaggi
    142
    Si si avevo capito.
    Uso un IDE (NetBeans) per il quale la directory corrente è quella del progetto.

    Ho provato a far girare questo esempio completo che si trova qui

    codice:
    import java.awt.*;   
    import java.awt.event.*;   
    import java.awt.geom.AffineTransform;   
    import java.awt.image.BufferedImage;   
    import javax.swing.*;   
    import javax.swing.tree.*;   
        
        public class CustomIconsRx extends JFrame {   
            public static void main(String[] args) {   
                new CustomIconsRx();   
        }   
        
        private ImageIcon customOpenIcon;  // = new ImageIcon("Circle_1.gif");   
        private ImageIcon customClosedIcon;// = new ImageIcon("Circle_2.gif");   
        private ImageIcon customLeafIcon;  // = new ImageIcon("Circle_3.gif");   
        
        public CustomIconsRx() {   
            super("JTree Selections");   
            setDefaultCloseOperation(EXIT_ON_CLOSE);   
            ImageIcon[] icons = getIcons();   
            double scale = 1.20;   
            createScaledIcons(icons, scale);   
            setContents();   
            pack();   
            setVisible(true);   
        }   
        
        private ImageIcon[] getIcons() {   
            String[] ids = { "Circle_1.gif", "Circle_2.gif", "Circle_3.gif" };   
            ImageIcon[] icons = new ImageIcon[ids.length];   
            for(int j = 0; j < icons.length; j++)   
                icons[j] = new ImageIcon(ids[j]);   
            return icons;   
        }   
        
        private void createScaledIcons(ImageIcon[] icons, double scale) {   
            customOpenIcon   = new ImageIcon(scale(icons[0].getImage(), scale));   
            customClosedIcon = new ImageIcon(scale(icons[1].getImage(), scale));   
            customLeafIcon   = new ImageIcon(scale(icons[2].getImage(), scale));   
        }   
        
        private BufferedImage scale(Image src, double scale) {   
            int w = (int)(scale*src.getWidth(this));   
            int h = (int)(scale*src.getHeight(this));   
            // Select type that can accommodate the images found here:   
            // http://www.apl.jhu.edu/~hall/java/Swing-Tutorial/   
            //        ComplexExamples/JTrees/images/Circle_1.gif   
            int type = BufferedImage.TYPE_INT_ARGB_PRE;   
            BufferedImage dest = new BufferedImage(w, h, type);   
            Graphics2D g2 = dest.createGraphics();   
            g2.setRenderingHint(RenderingHints.KEY_INTERPOLATION,   
                                RenderingHints.VALUE_INTERPOLATION_BICUBIC);   
            AffineTransform at = AffineTransform.getScaleInstance(scale, scale);   
            g2.drawImage(src, at, this);   
            g2.dispose();   
            return dest;   
        }   
        
        private void setContents() {   
            Container content = getContentPane();   
            content.setLayout(new FlowLayout());   
            DefaultMutableTreeNode root = new DefaultMutableTreeNode("Root");   
            DefaultMutableTreeNode child;   
            DefaultMutableTreeNode grandChild;   
            for(int childIndex=1; childIndex<4; childIndex++) {   
                child = new DefaultMutableTreeNode("Child " + childIndex);   
                root.add(child);   
                for(int grandChildIndex=1; grandChildIndex<4; grandChildIndex++) {   
                    grandChild =   
                        new DefaultMutableTreeNode("Grandchild " + childIndex +   
                            "." + grandChildIndex);   
                    child.add(grandChild);   
                }   
            }   
        
            JTree tree1 = new JTree(root);   
            tree1.expandRow(1); // Expand children to illustrate leaf icons   
            JScrollPane pane1 = new JScrollPane(tree1);   
            pane1.setBorder(BorderFactory.createTitledBorder("Standard Icons"));   
            content.add(pane1);   
        
            JTree tree2 = new JTree(root);   
            tree2.expandRow(2); // Expand children to illustrate leaf icons   
            DefaultTreeCellRenderer renderer2 = new DefaultTreeCellRenderer();   
            renderer2.setOpenIcon(null);   
            renderer2.setClosedIcon(null);   
            renderer2.setLeafIcon(null);   
            tree2.setCellRenderer(renderer2);   
            JScrollPane pane2 = new JScrollPane(tree2);   
            pane2.setBorder(BorderFactory.createTitledBorder("No Icons"));   
            content.add(pane2);   
        
            JTree tree3 = new JTree(root);   
            tree3.expandRow(3); // Expand children to illustrate leaf icons   
            DefaultTreeCellRenderer renderer3 = new DefaultTreeCellRenderer();   
            renderer3.setOpenIcon(customOpenIcon);   
            renderer3.setClosedIcon(customClosedIcon);   
            renderer3.setLeafIcon(customLeafIcon);   
            tree3.setCellRenderer(renderer3);   
            JScrollPane pane3 = new JScrollPane(tree3);   
            pane3.setBorder(BorderFactory.createTitledBorder("Custom Icons"));   
            content.add(pane3);   
        }   
    }
    Mettendo i riferimenti ad un paio di gif che ho nel mio pc ( anche un'emoticon di questo sito) ... non vedo cmq le icone.

  10. #10
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da som
    Uso un IDE (NetBeans) per il quale la directory corrente è quella del progetto.
    Ne sei proprio sicuro???

    Nel tuo programma, nel main(), metti ad esempio:

    JOptionPane.showMessageDialog(null, System.getProperty("user.dir"));

    Poi mi dici se la directory mostrata è quella che tu pensavi ....
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

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