Différences
Ci-dessous, les différences entre deux révisions de la page.
Prochaine révision | Révision précédente | ||
slam4:gui:swt [2013/03/26 01:27] – créée jcheron | slam4:gui:swt [2019/08/31 14:21] (Version actuelle) – modification externe 127.0.0.1 | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
- | ====== | + | ====== |
- | + | ||
- | * **AWT** : Abstract Window Toolkit utilise les composants natifs de la plate-forme -> limité en composants | + | |
- | * **Swing** : basé sur AWT, enrichi, composants indépendants de la plate-forme, | + | |
- | * **SWT** : Standard Widget Toolkit, Bibliothèque graphique libre créée par IBM (Eclipse repose sur cette architecture), | + | |
- | * JFace : Bibliothèque graphique libre s' | + | |
- | * **Eclipse RCP** : Rich Client Platform, utilisant SWT, JFace | + | |
===== -- Création d'une application SWT ===== | ===== -- Création d'une application SWT ===== | ||
Ligne 13: | Ligne 7: | ||
* Création d'un projet : Choisir **File/ | * Création d'un projet : Choisir **File/ | ||
* Choisir **File/ | * Choisir **File/ | ||
+ | {{: | ||
+ | |||
+ | ===== -- Structure d'une application ===== | ||
+ | |||
+ | <sxh java; | ||
+ | public class MainWindow { | ||
+ | |||
+ | protected Shell shell; | ||
+ | |||
+ | /** | ||
+ | * Launch the application. | ||
+ | * @param args | ||
+ | */ | ||
+ | public static void main(String[] args) { | ||
+ | try { | ||
+ | MainWindow window = new MainWindow(); | ||
+ | window.open(); | ||
+ | } catch (Exception e) { | ||
+ | e.printStackTrace(); | ||
+ | } | ||
+ | } | ||
+ | |||
+ | /** | ||
+ | * Open the window. | ||
+ | */ | ||
+ | public void open() { | ||
+ | Display display = Display.getDefault(); | ||
+ | createContents(); | ||
+ | shell.open(); | ||
+ | shell.layout(); | ||
+ | while (!shell.isDisposed()) { | ||
+ | if (!display.readAndDispatch()) { | ||
+ | display.sleep(); | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | |||
+ | /** | ||
+ | * Create contents of the window. | ||
+ | */ | ||
+ | protected void createContents() { | ||
+ | shell = new Shell(); | ||
+ | shell.setSize(450, | ||
+ | shell.setText(" | ||
+ | |||
+ | } | ||
+ | |||
+ | } | ||
+ | </ | ||
+ | |||
+ | ===== -- Mode Design ===== | ||
+ | Créer l' | ||
+ | {{: | ||
+ | |||
+ | ===== -- Implémentation du comportement ===== | ||
+ | Nous allons ajouter les comportements suivants : | ||
+ | * Sur la sélection d'une des options, le texte de l' | ||
+ | * Sur le click du bouton Valider, le texte entré dans la zone de texte remplace le texte de l' | ||
+ | ==== -- Ajout de listener ==== | ||
+ | |||
+ | |||
+ | * Sélectionner L' | ||
+ | * Choisir **add Event Handler/ Selection/ WidgetSelected** | ||
+ | |||
+ | {{: | ||
+ | |||
+ | |||
+ | Le listener est implémenté via une classe anonyme : | ||
+ | <sxh java; | ||
+ | btnOption.addSelectionListener(new SelectionAdapter() { | ||
+ | @Override | ||
+ | public void widgetSelected(SelectionEvent e) { | ||
+ | |||
+ | } | ||
+ | }); | ||
+ | </ | ||
+ | |||
+ | * Ajouter un membre privé **Button activeButton** | ||
+ | * Implémenter le code suivant : | ||
+ | |||
+ | <sxh java> | ||
+ | @Override | ||
+ | public void widgetSelected(SelectionEvent e) { | ||
+ | activeButton = (Button) e.getSource(); | ||
+ | text.setText(activeButton.getText()); | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | ==== -- Ajout d'un même listener sur les évènements de plusieurs Widgets ==== | ||
+ | |||
+ | <sxh java> | ||
+ | SelectionAdapter sa = new SelectionAdapter() { | ||
+ | @Override | ||
+ | public void widgetSelected(SelectionEvent e) { | ||
+ | activeButton = (Button) e.getSource(); | ||
+ | text.setText(activeButton.getText()); | ||
+ | } | ||
+ | }; | ||
+ | btnOption.addSelectionListener(sa); | ||
+ | btnOption_1.addSelectionListener(sa); | ||
+ | </ | ||
+ | |||
+ | |||
+ | ===== --Divers ===== | ||
+ | |||
+ | ==== -- Chargement d'une image ==== | ||
+ | <sxh java> | ||
+ | public static Image loadImage(String path, boolean inJar) { | ||
+ | Image newImage = null; | ||
+ | try { | ||
+ | if (inJar) | ||
+ | { | ||
+ | newImage = new Image(null, App.class.getClassLoader().getResourceAsStream(path)); | ||
+ | } | ||
+ | else { | ||
+ | newImage = new Image(null, path); | ||
+ | } | ||
+ | } catch (SWTException ex) { | ||
+ | ex.printStackTrace(); | ||
+ | } | ||
+ | |||
+ | return newImage; | ||
+ | } | ||
+ | </ | ||
+ | |||