05. maj 2003 - 22:52Der er
1 kommentar og 1 løsning
JTree markering af subfolders
Hejsa
Jeg har lavet et program hvor jeg bruger en JTree komponent til at markere noget hirakisk data. Jeg har selv lavet den bagvedliggende datamodel ved at implementere TreeModel interfacet.
Metoden isLeaf(Object obj) har jeg implementeret således at hvis obj er et "mappe objekt" så returnerer den falsk. Dette giver de rigtige ikoner i forhold til mapper og mine tekst noder, men det medfører også at alle mapper har et "markeringstegn" der signalerer at der er undermapper. Dette tegn forsvinder ganske vidst når mappen "åbnes" men det er stadigt temmeligt irriterende. Er der nogen der har en idé til hvad jeg kan gøre således at kun de nodes med childs får et "+" tegn.
i et program som jeg har lavet har jeg gjordt det således at leef's altid vises som node's ved følgende kode og da er der ikke noget plus ved mapper som ikke har childes
måske er det hjælp til en ide
DefaultTreeCellRenderer renderer = new DefaultTreeCellRenderer(); renderer.setLeafIcon(renderer.getDefaultClosedIcon( )); serverTree.setCellRenderer(renderer);
Det nemmeste er at extends DefaultMutableTreeNode og override metoden public boolean isLeaf().
Jeg har selv brugt det i en filstruktur, hvor min extendede TreeNode klasse ser således ud: import javax.swing.tree.DefaultMutableTreeNode; import java.io.*;
public class FileNode extends DefaultMutableTreeNode {
public boolean isDirectory() { return file.isDirectory(); }
public String toString() { if( file.getName().equals("") ) return file.getAbsolutePath(); return file.getName(); } public void explore() { File[] children = file.listFiles(new DirFilter());
for(int i=0; i < children.length; ++i) add(new FileNode(children[i])); } private class DirFilter implements FileFilter { public boolean accept(File file) { return file.isDirectory() && !file.isHidden(); } } }
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.