This website uses cookies for visitor traffic analysis. By using the website, you agree with storing the cookies on your computer.More information

--Verwenden der Image Library

Dokumente für die Entwicklung von und mit JVx.

--Verwenden der Image Library

Postby Development@SIB » Wed Nov 11, 2009 2:57 pm



Dieser Artikel ist veraltet - Bitte verwenden Sie unser neues System

https://doc.sibvisions.com





Die Image Library wird verwendet um in einer Applikation auf einfachste Art und Weise auf Bilder zuzugreifen. Üblicherweise werden Bilder im classpath einer Applikation abgelegt und mit dem vollständigen Ressource-Pfad geladen, z.B.:

Code: Select all
Toolkit.class.getResourceAsStream("/javax/rad/genui/images/32x32/about.png");


Die Image Library erlaubt einerseits den Zugriff über den vollständigen Ressource-pfad und andererseits den Zugriff über vordefinierte und/oder benutzerdefinierte Bildnamen. Nachfolgendes Beispiel lädt das Bild about.png, aus unserem vorherigen Beispiel, über den Ressource-Pfad und den vordefinierten Bildnamen:

Code: Select all
//possible
UIImage.getImage("/javax/rad/genui/images/32x32/about.png");

//recommended
UIImage.getImage(UIImage.ABOUT_LARGE);


Die Image Library enthält bereits wichtige Applikations- Bilder/Icons die üblicherweise Verwendung finden, wie z.B.:
SAVE_SMALL, SAVE_LARGE,
COPY_SMALL, COPY_LARGE,
PASTE_SMALL, PASTE_LARGE,
SEARCH_SMALL, SEARCH_LARGE,
uvm.

Für jedes vordefinierte Bild existiert eine kleine (16 x 16px) und eine große Variante (24 x 24px). Die kleinere Variante eignet sich für die Verwendung in Menüs und Buttons, die große Variante für Hinweise, Detailanzeigen oder für Toolbars.

Für eine vollständige Liste der vordefinierten Bilder verwenden Sie bitte die Klasse UIImage.

Durch die Image Library und die Verwendung von Bildnamen, anstatt von Ressource-Pfad Angaben, ist es sehr einfach ein einzelnes Bild an zentraler Stelle, für die gesamte Applikation auszutauschen. Es ist nicht nötig in jedem Work-Screen nach dem Bild zu suchen und den Klassenpfad zu ändern. Die Änderung der Bild Definition ist ausreichend.


Anwendungsbeispiel

Unsere Applikation verwendet ausschließlich die Image Library für die Darstellung von Bildern/Icons. Wir verwenden vordefinierte Bilder und definieren zusätzlich unsere eigenen Bilder die nicht in der Image Library enthalten sind. Außerdem ändern wir einige vordefinierte Bilder da diese nicht unserem Geschmack entsprechen.

Im Konstruktor unserer Applikation definieren wir die Änderungen:

Code: Select all
//We don't like the predefined add/remove images
UIImage.setImageMapping(UIImage.ADD_SMALL,
                        "/com/sibvisions/apps/packung/images/16x16/new.png");
UIImage.setImageMapping(UIImage.REMOVE_SMALL,
                        "/com/sibvisions/apps/packung/images/16x16/delete.png");

//We don't need the large images
UIImage.setImageMapping(UIImage.ADD_LARGE, null);
UIImage.setImageMapping(UIImage.REMOVE_LARGE, null);

//We have special images which are not predefined
UIImage.setImageMapping(PackungApplication.IMAGE_NOBODY,
                        "/com/sibvisions/apps/packung/images/nobody.png");


In einem unserer Work-Screens verwenden wir nun die Image Library für die Bilder unserer Buttons:

Code: Select all
UIButton butOK = new UIButton();
butOK.setImage(UIImage.getImage(UIImage.OK_SMALL));


Weiters ist es möglich anstatt der Klassenpfad Angaben auch die Bildnamen zu verwenden. Das ist dann der Fall, wenn keine IImage Instanz benötigt wird wie z.B.:

Code: Select all
/** Yes/ No Choice editor. */
new UIChoiceCellEditor(new Object [] {"Y", "N"},
                       new String [] {UIImage.CHECK_YES_SMALL,
                                      UIImage.CHECK_SMALL},
                                      UIImage.CHECK_SMALL);

Im Gegensatz zur Verwendung ohne Image Library:

Code: Select all
/** Yes/ No Choice editor. */
new UIChoiceCellEditor(new Object [] {"Y", "N"},
                       new String [] {"/javax/rad/genui/images/16x16/check_yes.png",
                                      "/javax/rad/genui/images/16x16/check.png"},
                                      "/javax/rad/genui/images/16x16/check.png");


Wenn wir uns nun dazu entscheiden die Bilder der Applikation zu ändern, so ist es ausreichend unsere Definitionen zu ändern und nicht die gesamte Applikation zu durchsuchen:

Code: Select all
UIImage.setImageMapping(UIImage.CHECK_YES_SMALL,
                        "/com/sibvisions/apps/packung/images/16x16/packung_check_yes_small.png");
UIImage.setImageMapping(UIImage.CHECK_SMALL,
                        "/com/sibvisions/apps/packung/images/16x16/packung_check_small.png");


Hinweis

Die Image Library speichert die bereits verwendeten Bilder und verhindert dadurch das ein und dasselbe Bild mehrfach geladen wird. Das spart nicht nur Hauptspeicher sondern wirkt sich auch positiv auf die Performance aus.
User avatar
Development@SIB
 
Posts: 325
Joined: Mon Sep 28, 2009 1:54 pm

Return to Documentation (DE)