1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen

Bilder für Applikation?

Dieses Thema im Forum "Java" wurde erstellt von tinella, 8. Februar 2006.

  1. tinella

    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
     
  2. Thomas Darimont

    Thomas Darimont Premium-User

    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 (Text):
    1. /**
    2.  *
    3.  */
    4. package de.tutorials;
    5.  
    6. import java.io.File;
    7.  
    8. import org.eclipse.jface.resource.ImageRegistry;
    9. import org.eclipse.jface.viewers.ILabelProvider;
    10. import org.eclipse.jface.viewers.ILabelProviderListener;
    11. import org.eclipse.jface.viewers.ITreeContentProvider;
    12. import org.eclipse.jface.viewers.TreeViewer;
    13. import org.eclipse.jface.viewers.Viewer;
    14. import org.eclipse.jface.viewers.ViewerFilter;
    15. import org.eclipse.jface.window.ApplicationWindow;
    16. import org.eclipse.swt.graphics.Image;
    17. import org.eclipse.swt.widgets.Composite;
    18. import org.eclipse.swt.widgets.Control;
    19. import org.eclipse.swt.widgets.Display;
    20. import org.eclipse.swt.widgets.Shell;
    21.  
    22. /**
    23.  * @author Tom
    24.  *
    25.  */
    26. public class JFaceTreeExample extends ApplicationWindow {
    27.  
    28.     private ImageRegistry imageRegistry;
    29.    
    30.     private File rootFile;
    31.    
    32.     public JFaceTreeExample(Shell parentShell) {
    33.         super(parentShell);
    34.     }
    35.    
    36.     private void initImages() {
    37.         imageRegistry.put("FILE",new Image(Display.getCurrent(),"c:/fileIcon.jpg"));
    38.         imageRegistry.put("DIRECTORY",new Image(Display.getCurrent(),"c:/directoryIcon.jpg"));
    39.         imageRegistry.put("ROOT_DIRECTORY",new Image(Display.getCurrent(),"c:/rootDirectoryIcon.jpg"));
    40.     }
    41.    
    42.    
    43.  
    44.     protected Control createContents(Composite parent) {
    45.         imageRegistry = new ImageRegistry();
    46.         initImages();
    47.         getShell().setText("JFaceTreeExample");
    48.         parent.setSize(640, 480);
    49.         TreeViewer treeViewer = new TreeViewer(parent);
    50.         treeViewer.setContentProvider(new FileContentProvider());
    51.         treeViewer.setLabelProvider(new FileNameLabelProvider());
    52.         treeViewer.setInput(rootFile = new File("D:/springframework/2.0M1"));
    53.         treeViewer.addFilter(new ViewerFilter() {
    54.             public boolean select(Viewer viewer, Object parentElement,
    55.                     Object element) {
    56.                 File currentFile = (File) element;
    57.                 return currentFile.isDirectory() ? directoryContainsJar(currentFile)
    58.                         : isJarFile(currentFile);
    59.             }
    60.  
    61.             private boolean directoryContainsJar(File currentDirectory) {
    62.                 File[] files = currentDirectory.listFiles();
    63.  
    64.                 boolean containsJarFile = false;
    65.                 for (int i = 0; files != null && i < files.length
    66.                         && !containsJarFile; i++) {
    67.                     if (files[i].isDirectory()) {
    68.                         containsJarFile = directoryContainsJar(files[i]);
    69.                     } else {
    70.                         containsJarFile = isJarFile(files[i]);
    71.                     }
    72.                 }
    73.  
    74.                 return containsJarFile;
    75.             }
    76.  
    77.             private boolean isJarFile(File currentFile) {
    78.                 return currentFile.getName().endsWith(".jar");
    79.             }
    80.         });
    81.  
    82.         return super.createContents(parent);
    83.     }
    84.  
    85.     /**
    86.      * @param args
    87.      */
    88.     public static void main(String[] args) {
    89.         ApplicationWindow applicationWindow = new JFaceTreeExample(null);
    90.         applicationWindow.setBlockOnOpen(true);
    91.         applicationWindow.open();
    92.         Display.getCurrent().dispose();
    93.     }
    94.  
    95.     public class FileContentProvider implements ITreeContentProvider {
    96.         public Object[] getChildren(Object parentElement) {
    97.             return ((File) parentElement).listFiles();
    98.         }
    99.  
    100.         public Object getParent(Object element) {
    101.             return ((File) element).getParentFile();
    102.         }
    103.  
    104.         public boolean hasChildren(Object element) {
    105.             String[] files = ((File) element).list();
    106.             return files != null && files.length > 0;
    107.         }
    108.  
    109.         public Object[] getElements(Object inputElement) {
    110.             return getChildren(inputElement);
    111.         }
    112.  
    113.         public void dispose() {
    114.         }
    115.  
    116.         public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
    117.         }
    118.     }
    119.  
    120.     public class FileNameLabelProvider implements ILabelProvider {
    121.         public Image getImage(Object element) {
    122.             if(((File)element).getParentFile().equals(rootFile)){
    123.                 return imageRegistry.get("ROOT_DIRECTORY");
    124.             }else if(((File)element).isDirectory()){
    125.                 return imageRegistry.get("DIRECTORY");
    126.             }else{
    127.                 return imageRegistry.get("FILE");    
    128.             }
    129.         }
    130.  
    131.         public String getText(Object element) {
    132.             return ((File) element).getName();
    133.         }
    134.  
    135.         public void addListener(ILabelProviderListener listener) {
    136.         }
    137.  
    138.         public void dispose() {
    139.         }
    140.  
    141.         public boolean isLabelProperty(Object element, String property) {
    142.             return false;
    143.         }
    144.  
    145.         public void removeListener(ILabelProviderListener listener) {
    146.         }
    147.     }
    148. }
    ... natuerlich solltest du bei beenden der Applikation dafuer sorgen, dass die nativen Resourcen (Images) noch disposed werden.

    Gruss Tom
     

    Anhänge:

  3. tinella

    tinella Erfahrenes Mitglied

    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: 9. Februar 2006
  4. takidoso

    takidoso Erfahrenes Mitglied

    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
     
  5. schnuffie

    schnuffie Erfahrenes Mitglied

    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:

    • essen.zip
      Dateigröße:
      332 Bytes
      Aufrufe:
      39
  6. takidoso

    takidoso Erfahrenes Mitglied

    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
     
  7. webmanie

    webmanie Mitglied

  8. fr_osch

    fr_osch Grünschnabel

    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
     
Die Seite wird geladen...