Announcement

Collapse
No announcement yet.

JTree, Symbole selbst bestimmen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • JTree, Symbole selbst bestimmen

    Hi,

    ich habe in meinem Programm einen JTree, der ein Dateisystem repräsentiert welches in einer entfernten Datenbank gespeichert ist.

    Jetzt möchte ich dass Dokumente, mit dem Symbol für eine Datei dargestellt werden. (Nicht der hässliche Punkt beim WindowsLookAndFeel) und vor allem Ordner mit dem Ordnersymbol. Auch wenn sie keine Kinder enthalten.

    Das Prinzipielle vorgehen ist klar. Ich muss einen eigenen TreeCellRenderer schreiben, und auch einen eigenen TreeNode, der weiß ob er eine Datei oder ein Ordner ist.

    Den eigenen TreeNode habe ich. Den egenen CellRenderer Prinzipiell auch :

    Code:
    public class CustomTreeCellRenderer extends DefaultTreeCellRenderer{ 
    	
    	 private FileSystemView system; // die brauchen wir für die Icons
    
    	 public CustomTreeCellRenderer(){
    		 system = FileSystemView.getFileSystemView();
    	 }
    
    	public Component getTreeCellRendererComponent(JTree tree, Object value, boolean selected, boolean expanded, boolean leaf, int row, boolean hasFocus){ 
    	  super.getTreeCellRendererComponent( tree, value, selected, expanded, leaf, row, hasFocus ); 
    	  CustomNode node = (CustomNode)value;
    	  if(node.isDatei()){
    		  // 2 Möglichkeiten kenne ich schon
    		  this.setIcon(new ImageIcon("wasmanwill.jpg|gif|png(?)"));
    		  // oder
    		  this.setIcon(system.getSystemIcon(new File(node.getUrl())));
    	  }else{
    		  // ...
    	  }
    	  return this; 
    	} 
      }
    Problem an der Methode mit dem FileSystemView ist, dass die Dateien lokal nicht vorliegen, sondern wie schon gesagt nur in der Datenbank liegen. Fällt also weg.
    Bei der zweiten muss ich mir die Bildchen selber malen, finde ich auch nicht so toll.


    Gibt es nicht eine Möglichkeit sich die entsprechenden Bildchen von Hand aus einem LookAndFeel zu holen ?

    Beste Grüße
    Boozer

  • #2
    Nein, gibt es nicht. Wo ist das Problem diese Standard-Icons entweder per Screenshot oder aus einer freien Lib zu kopieren?
    Christian

    Comment


    • #3
      Es ist natürlich kein Problem sie aus einem Screenshot zu kopieren, das habe ich jetzt auch ertmal gemacht. Ist natürlich umständlich, falls man auch noch spezielle Icons je nach Dateityp machen will (vor allem generisch)

      Was meinst du mit einer freien Lib ?

      Gruß

      Comment


      • #4
        http://www.famfamfam.com/lab/icons/silk/

        mit

        http://www.famfamfam.com/lab/icons/s.../index_abc.png

        falls man auch noch spezielle Icons je nach Dateityp machen will (vor allem generisch)
        Falls du dafür eine Lösung in Java hast, wäre ich interessiert. Also das mit der Datei verbunde Icon lesen
        Christian

        Comment


        • #5
          Naja, falls du die Datei lokal auf dem Rechner hast, geht das mit
          Code:
           
          this.setIcon(FileSystemView.getFileSystemView().getSystemIcon(new File(url)));
          Die url muss dein TreeNode kennen.

          Falls ich eine schöne Lösung für das Problem bei nicht lokaler Datei finde geb ich bescheid

          Comment


          • #6
            Danke für die Info
            Christian

            Comment

            Working...
            X