1 / 30

Conception d’IHM en Java

Do it with Swing. Conception d’IHM en Java. Cedric.Dumas@emn.fr contrat Creative Commons Paternité-Pas d'Utilisation Commerciale-Partage des Conditions Initiales à l'Identique 2.0 France License. GUI Toolkits / Boîtes à Outils : Swing. Swing. Window Manager. Graphics(2D). OpenGL. Java.

elvina
Download Presentation

Conception d’IHM en Java

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Do it with Swing Conception d’IHM en Java Cedric.Dumas@emn.frcontrat Creative Commons Paternité-Pas d'Utilisation Commerciale-Partage des Conditions Initiales à l'Identique 2.0 France License

  2. GUI Toolkits / Boîtes à Outils : Swing Swing Window Manager Graphics(2D) OpenGL Java Machine Virtuelle Système d'Exploitation

  3. Construire une application (en Swing) 1 fenêtre 1 arbre d'affichage 1 gestionnaire d'espace des widgets des gestionnaires d'évènements

  4. 1 – Une fenêtre Structurer l’espace d’affichage Partager la ressource écran Dépendante du Gestionnaire de fenêtres Fenêtre = zone autonome pour l’affichage pour les entrées

  5. 1 – Une fenêtre Accès partagé à l'écran Subdivision de l'écran en fenêtres Chaque fenêtre est positionné (x, y, z) et dimensionnée (largeur x hauteur)

  6. 2 – Un arbre d'affichage Afficher = appeler une succession de fonctions graphiques Représentation sous forme d'un arbre d'affichage

  7. JFrame JTree JPanel JPanel JToolbar JButton JRadioButton JButton JRadioButton 2 – Arbre Swing

  8. JFrame JToolBar JPanel JList JButton JButton JButton JTextArea 2 – Arbre Swing

  9. JFrame JMenuBar JMenu File JMenu View JMenu Help JMenuItem Open JMenuItem Undo JMenuItem About… JMenuItem Save JMenuItem JMenuItem Save as… JMenuItem Paste JMenuItem Quit JMenuItem Copy 2 – Arbre Swing

  10. 2 – Un arbre d'affichage Les langages à objets permettent de représenter ces nœuds comme des objets ayant une interface Tous les nœuds héritent d'une classe de base (JComponent dans Swing) Chaque composant particulier spécifie une interface particulière adaptée à sa sémantique

  11. 2 – Un arbre d'affichage Basé sur des containers générique gère collection de composants design Pattern composite

  12. 2bis – Layout Manager Liés aux containers

  13. 2bis – Calcul du placement Le placement est calculé dans les conteneurs Soit les composants sont placés explicitement (x, y, largeur, hauteur) Soit ils sont gérés par un « LayoutManager » qui calcul ces paramètres dynamiquement besoins du composant (taille min, max, normale) + positionnement relatif

  14. 2bis – Mise en place d ’un gestionnaire de placement Les conteneurs définissent la méthode setLayout(layoutManager) pour changer le gestionnaire par défaut Le gestionnaire par défaut change d ’une classe de conteneur à une autre La méthode pack() déclenche le calcul du placement La méthode invalidate() rend le placement courant invalide

  15. 2bis – Les gestionnaires de placement... FlowLayout Place les composants de gauche à droite CardLayout Superpose les composants GridLayout Découpe en une grille régulière sur laquelle les composants sont placés GridBagLayout Découpe en une grille et place les composants sur une ou plusieurs cases

  16. 2bis – ...ou Layout Manager • BorderLayout • Découpe en 5 régions: south, north, east, west, center • Aucun : .setBounds(x,y,h,l);

  17. 3 – les widgets

  18. 3 – Les composants graphiques interactifs = widgets Le nœud est capable de s'afficher et de gérer les événement On lui ajoute une interface de communication suivant sa sémantique bouton, label, menu, ligne de texte, etc. On appelle ce nœud communicant un composant ou widget ou gadget ou objet de contrôle.

  19. 3 – JMenu Une instance de JMenuBar par Jframe setJMenuBar(JMenuBar mb); Plusieurs Jmenu par JMenuBar add(JMenu jm); Plusieurs JMenuItem/JCheckboxMenu par Jmenu add(JMenuItem mi); addSeparator(); Structurez !!!

  20. 3 – JPanel JPanel conteneur JScrollPane un seul composant ! barres de défilement JScrollPane sp = new JScrollPane(); sp.add(monJLabel); sp.setViewportView (monJLabel); composants implémentant Scrollable class MonLabel extends Jlabel implements Scrollable Panel ScrollPane

  21. 3 – Les composants de SWING Dialog Frame Tabbed Pane Split pane Tool bar Internal frame Layered pane

  22. 3 – Composants de Swing List Tool tip File chooser Color chooser Progress bar Slider Table Text Tree

  23. 4 – un gestionnaire d'évènements Les dispositifs d'entrée génèrent des événements (petit bloc mémoire contenant un type, un temps, une fenêtre cible et des détails suivant le type) Swing achemine l'événement vers un nœud cible Le nœud gère l'événement, ce qui peut modifier l'état de l'arbre d'affichage On passe à l'événement suivant

  24. 4 – Acheminement des événements Positionnel (souris) on regarde quel est le nœud de l'arbre le plus près de la position On l'envoie au plus prés, qui renvoie a son père s'il ne veut pas le gérer Non positionnel (clavier) si un nœud à le "focus", on lui envoie traduction d'une touche en caractère(s) ou action sinon, on cherche une cible gestion des raccourcis clavier

  25. Y JFrame JToolBar JPanel JList JButton JButton JButton JTextArea 4 – Arbre Swing X Event |time | (X,Y)

  26. 4 – Les événements Package java.awt.event.* Héritent de la classe java.awt.AWTEvent identificateur (numéro unique) consumed (a-t-il été utilisé?) source (qui l'a émis) Envoyés dans une file unique Toolkit.getSystemEventQueue() Lus par un thread spécique

  27. 4 – Types d’événements

  28. 4 – Association de gestionnaires d ’actions • Pour chaque famille d ’événements, une interface « listener » est définie • MouseListener, MouseMoveListener, KeyListener, etc. • Chaque classe composant définit « add<nom>Listener(<nom>Listener ) Frame ActionListener Button addActionListener(ActionListener) actionPerformed(ActionEvent e)

  29. 4 – Les listeners Chaque composant peut renvoyer certains événements à l'application si elle le demande Le renvoi se fait par un Listener actionListener, AdjustmentListener, FocusListener, InputMethodListener, ItemListener, KeyListener, MouseListener, MouseMotionListener, TextListener, WindowListener

  30. 4 – Sur tous les composants Swing component listener Listens for changes in the component's size, position, or visibility. focus listener Listens for whether the component gained or lost the ability to receive keyboard input. key listener Listens for key presses; key events are fired only by the component that has the current keyboard focus. mouse listener Listens for mouse clicks and mouse movement into or out of the component's drawing area. mouse-motion listener Listens for changes in the cursor's position over the component. mouse-wheel listener(introduced in 1.4) Listens for mouse wheel movement over the component.

More Related