Bilder für Applikation?

tinella

Erfahrenes Mitglied
Hallo Leute

Ich mache einen Tree, dazu sollte ich anzeigen ob es sich bei einem Treeelement um ein Root, ein Verzeichnis oder eine Klasse handelt.

Ich bin nicht ganz sicher wie ich das am besten mache mit den Bildern, damit die auch die Standardgrösse bekommen wie sonst in jeder Applikation!

Muss ich die selber irgendwie zusammengoogeln?
Darf ich fragen, von wo ihr die Bilder jeweils habt?

Wäre um eine Antwort froh! ;-)

Danke
Tinella
 
Hallo!

Wenn du das Beispiel aus:
http://www.tutorials.de/forum/java/235251-swt-tree-abfuellen.html

Leicht abwandelst kommst du zu diesem hier:
Code:
/**
 * 
 */
package de.tutorials;

import java.io.File;

import org.eclipse.jface.resource.ImageRegistry;
import org.eclipse.jface.viewers.ILabelProvider;
import org.eclipse.jface.viewers.ILabelProviderListener;
import org.eclipse.jface.viewers.ITreeContentProvider;
import org.eclipse.jface.viewers.TreeViewer;
import org.eclipse.jface.viewers.Viewer;
import org.eclipse.jface.viewers.ViewerFilter;
import org.eclipse.jface.window.ApplicationWindow;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;

/**
 * @author Tom
 * 
 */
public class JFaceTreeExample extends ApplicationWindow {

    private ImageRegistry imageRegistry;
    
    private File rootFile;
    
    public JFaceTreeExample(Shell parentShell) {
        super(parentShell);
    }
    
    private void initImages() {
        imageRegistry.put("FILE",new Image(Display.getCurrent(),"c:/fileIcon.jpg"));
        imageRegistry.put("DIRECTORY",new Image(Display.getCurrent(),"c:/directoryIcon.jpg"));
        imageRegistry.put("ROOT_DIRECTORY",new Image(Display.getCurrent(),"c:/rootDirectoryIcon.jpg"));
    }
    
    

    protected Control createContents(Composite parent) {
        imageRegistry = new ImageRegistry();
        initImages();
        getShell().setText("JFaceTreeExample");
        parent.setSize(640, 480);
        TreeViewer treeViewer = new TreeViewer(parent);
        treeViewer.setContentProvider(new FileContentProvider());
        treeViewer.setLabelProvider(new FileNameLabelProvider());
        treeViewer.setInput(rootFile = new File("D:/springframework/2.0M1"));
        treeViewer.addFilter(new ViewerFilter() {
            public boolean select(Viewer viewer, Object parentElement,
                    Object element) {
                File currentFile = (File) element;
                return currentFile.isDirectory() ? directoryContainsJar(currentFile)
                        : isJarFile(currentFile);
            }

            private boolean directoryContainsJar(File currentDirectory) {
                File[] files = currentDirectory.listFiles();

                boolean containsJarFile = false;
                for (int i = 0; files != null && i < files.length
                        && !containsJarFile; i++) {
                    if (files[i].isDirectory()) {
                        containsJarFile = directoryContainsJar(files[i]);
                    } else {
                        containsJarFile = isJarFile(files[i]);
                    }
                }

                return containsJarFile;
            }

            private boolean isJarFile(File currentFile) {
                return currentFile.getName().endsWith(".jar");
            }
        });

        return super.createContents(parent);
    }

    /**
     * @param args
     */
    public static void main(String[] args) {
        ApplicationWindow applicationWindow = new JFaceTreeExample(null);
        applicationWindow.setBlockOnOpen(true);
        applicationWindow.open();
        Display.getCurrent().dispose();
    }

    public class FileContentProvider implements ITreeContentProvider {
        public Object[] getChildren(Object parentElement) {
            return ((File) parentElement).listFiles();
        }

        public Object getParent(Object element) {
            return ((File) element).getParentFile();
        }

        public boolean hasChildren(Object element) {
            String[] files = ((File) element).list();
            return files != null && files.length > 0;
        }

        public Object[] getElements(Object inputElement) {
            return getChildren(inputElement);
        }

        public void dispose() {
        }

        public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
        }
    }

    public class FileNameLabelProvider implements ILabelProvider {
        public Image getImage(Object element) {
            if(((File)element).getParentFile().equals(rootFile)){
                return imageRegistry.get("ROOT_DIRECTORY");
            }else if(((File)element).isDirectory()){
                return imageRegistry.get("DIRECTORY");
            }else{
                return imageRegistry.get("FILE");    
            }
        }

        public String getText(Object element) {
            return ((File) element).getName();
        }

        public void addListener(ILabelProviderListener listener) {
        }

        public void dispose() {
        }

        public boolean isLabelProperty(Object element, String property) {
            return false;
        }

        public void removeListener(ILabelProviderListener listener) {
        }
    }
}

... natuerlich solltest du bei beenden der Applikation dafuer sorgen, dass die nativen Resourcen (Images) noch disposed werden.

Gruss Tom
 

Anhänge

  • swtTreeExample.jpg
    swtTreeExample.jpg
    24,3 KB · Aufrufe: 164
Danke für die Antwort...

Meine Frage war eigentlich eher, von wo ich die Bilder herbekomme.
[Ich habe sie schlussendlich im icons Ordner von IrvanView gefunden.]

Interessiert mich aber trotzdem: von wo kriegt man die normalerweise?

Naja egal du hast mir auch so geholfen :)

Tinella
 
Zuletzt bearbeitet:
Hi Tinella,
also eine Methode ist es nach Bildern zu googeln eine andere ist es im Internetbrowser nach temporären Dateien zu schauen nach dem man auf bilderreichen bzw. Icon reichen Seiten war ;-)
Und wenn ein Bild einem gefällt aber vielleicht noch etwas verändert gehört dann benutzt man ein Grafikprogramm und verändert es einfach kreativ.
Ich brauchte zum Beispiel mal eine Glühbirne in verscheidenen Farben um auf ein Problem aufmerksam zu machen, die Lampe wa sozusgen animiert in verscheidenen Farben darzustellen.
Ich fand sehr schnell eine passende Lampe und hatte dann mir nur noch die Farben zurechtgebogen um ein aufleuchten darzustellen.

ich kann dir einige nette Bilderchen heute Nacht zukommenlassen wenn Du mir Deine email zukommen lässt. Schreibe mir dazu eine Mail an orukayha@aol.com mit dem Thema "Bitte um Icons"

Takidoso
 
Wer wird denn da flirten? *lol*

Wer sich irgendwelche Bildchen von irgendwoher versorgt, sollte vielleicht auch etwas vorsichtig sein, da eine Vielzahl Bilder rechtlich geschützt sind, denn wer will schon ein Anwaltsschreiben dafür im Briefkasten wiederfinden?

Mit IrfraView kann man sehr einfach Icons selbst machen (siehe z.B. Anhang).
 

Anhänge

ha flirten, netter Einwurf :-)
also ich denke mal, wenn man keinerlei Firmenlogos verwendet und Icons holt, die auf Webseiten zum runterladen stehen, kann nicht arg viel passieren.
und wenn man z.B. ein Druckersymbol oder welche ein Gerauchs-Icon auch immer nimmt und kreativ verändert sehe ich da eigetnlich auch kein Problem. Ich habe Icons nur dann von Grundauf selbst gemacht, wenn mir andere nicht passten oder nicht gefiehlen und eine "kreative Änderung" (inclusive Rekombination) nichts brachte oder unmöglich war.
Und ich habe bei allem Respekt vor Icon-Produzieren keinerlei Unrechtsempfinden, wenn ich ein Icon für Rekomnination und andere Veränderung, kreativ auf meine Bedürnisse umgestalte, mal abgesehen von Firmen-Logos.

man braucht eigetnlich seienn eigenen Rechner nur nach *.gif oder *.ico abzusuchen, da wird man prima fündig.

Takidoso
 
Na, es empfiehlt sich, Icons von offenen Programmen (GPL) zu verwenden. Grundsätzlich sind natürlich Icons urheberrechtlich geschützt. Bei den meisten freien Programmen sind die dazugehörigen Icons unter der Creative Commons License freigegeben zum beliegigen weiterverwenden. Das erspart einem eventuellen Ärger... manche kommerzielle Anbieter sind da recht pingelig, und das kann teuer werden.

Gruß
fr_osch
 
Zurück