La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

POO3 Introduction aux IHM et à la réflexivité Java Vos premiers pas en Swing Audrey Occello Cédric Joffroy Anne-Marie Dery.

Présentations similaires


Présentation au sujet: "POO3 Introduction aux IHM et à la réflexivité Java Vos premiers pas en Swing Audrey Occello Cédric Joffroy Anne-Marie Dery."— Transcription de la présentation:

1 POO3 Introduction aux IHM et à la réflexivité Java Vos premiers pas en Swing Audrey Occello Cédric Joffroy Anne-Marie Dery

2 Retour sur MVC

3 Rappel sur le patron MVC MVC pour Modèle-Vue-Contrôleur permet de séparer les données (M), linterface homme- machine (V) et la logique de contrôle (C) Impose une séparation en 3 couches : –M : représente les données de lapplication. Définit interaction avec la base de données et le traitement des données –V : représente linterface utilisateur. Effectue aucun traitement, ne fait que laffichage des données (fournies par M). Possibilité davoir plusieurs vues pour un même M –C : gère linterface entre le modèle et le client. Interprète la requête de ce dernier pour lui envoyer la vue correspondante. Effectue la synchronisation entre le modèle et les vues 3

4 Vous avez vu la réflexivité sur un modèle ! On va voir la partie Vue

5 PARTIE 2 : LA VUE Principes généraux Hiérarchies des composants – Des Containers spécifiques – La famille des panneaux – Les autres composants Les afficheurs (Layout) 5

6 Des éléments graphiques : Component Définition dun élément graphique avec une dimension, une position Des Coordonnées (Origine coin supérieur gauche, x (width) vers la droite et y (height) vers le bas) Des morceaux décrans : Graphics Contexte graphique Permet de dessiner –Changer de crayon : couleur, formes géométriques, images, chaînes de caractères - Automatiquement redimensionnés, réaffichés Que trouve-ton dans les librairies graphiques : RAPPEL Des éléments graphiques Contenant Container : qui contiennent dautres éléments graphiques organisés Du Formattage : LayoutManager Définition de lorganisation En ligne, en tableau, avec des contraintes,etc

7 PRINCIPES GÉNÉRAUX Pour la création des composants : 1.On choisit le container – on le crée 2.On précise le panneau dans lequel on dispose les composants (contenu) 3.On crée les événements sur les composants. IL PEUT Y AVOIR PLUSIEURS PANNEAUX DANS UNE FENETRE 7

8 PRINCIPES GÉNÉRAUX Exemple pour la création des composants 1.Création dun JFrame, 2.Construction du contenu dans un panneau (JPanel) ajouté au panneau de base : le contentPane 3.Traitement des événements sur les composants par des procédures appelées écouteurs (listener) dévénement 8

9 PRINCIPES GÉNÉRAUX Organiser laffichage des composants 1.On crée un container (JPanel ou autre) 2.Si on ne souhaite pas utiliser le layout par défaut, on définit une mise en page des composants du container en lui associant un afficheur (LayoutManager = gestionnaire daffichage) 3.On ajoute ensuite les composants primitifs au container 9

10 CREATION DUN PANNEAU class ButtonPanel extends JPanel implements ActionListener // interface écouteur d'événements { private JButton Boutonjaune; private JButton BoutonBleu; private JButton BoutonRouge; PLACER DES COMPOSANTS DANS LE PANNEAU public ButtonPanel() // constructeur de la classe ButtonPanel { Boutonjaune = new JButton("Jaune"); BoutonBleu = new JButton("Bleu"); BoutonRouge = new JButton("Rouge"); // Insertion des trois boutons dans l'objet ButtonPanel add(Boutonjaune); add(BoutonBleu); add(BoutonRouge); ASSOCIER DES EVENEMENTS AUX COMPOSANTS // Les sources d'événements sont déclarées à l'écouteur Boutonjaune.addActionListener(this); BoutonBleu.addActionListener(this); BoutonRouge.addActionListener(this); }

11 { public void actionPerformed(ActionEvent evt) // Permet de traiter l'événement en fonction de l'objet source { Object source = evt.getSource(); Color color = getBackground(); if (source == Boutonjaune) color = Color.yellow; else if (source == BoutonBleu) color = Color.blue; else if (source == BoutonRouge) color = Color.red; setBackground(color); repaint(); } } TRAITEMENT DES EVENEMENTS

12 CREATION DE LA FENETRE ET PLACEMENT DU PANNEAU class ButtonFrame extends JFrame { public ButtonFrame() { setTitle("ButtonTest"); setSize(300, 200); addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { System.exit(0); } } ); Container contentPane = getContentPane(); contentPane.add(new ButtonPanel()); } } public class ButtonTest { public static void main(String[] args) { JFrame frame = new ButtonFrame(); frame.show(); }

13 ARBRE DE COMPOSANTS Lajout dun composant à un composant (container) implique la construction dun sous arbre - le composant ajouté est le fils Le parent contient les composants qui lui sont ajoutés La méthode getParent() sur un composant retourne le parent (de type Container) 13 On a donc une arborescence des composants

14 Exemple : ARBRE DE COMPOSANTS 14

15 EXEMPLE DAPPLICATION JAVA SWING 15 JFrame frame = new JFrame("TopLevelDemo"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //Create the menu bar. Make it have a green background. JMenuBar greenMenuBar = new JMenuBar(); greenMenuBar.setOpaque(true); /RVB greenMenuBar.setBackground(new Color(154, 165, 127)); greenMenuBar.setPreferredSize(new Dimension(200, 20)); //Create a yellow label to put in the content pane. JLabel yellowLabel = new JLabel(); yellowLabel.setOpaque(true); yellowLabel.setBackground(new Color(248, 213, 131)); yellowLabel.setPreferredSize(new Dimension(200, 180)); //Set the menu bar and add the label to the content pane. frame.setJMenuBar(greenMenuBar); frame.getContentPane().add(yellowLabel,BorderLayout.CENTER);

16 PARTIE 1 : LA VUE Principes généraux Hiérarchies des composants – Des Containers spécifiques – La famille des panneaux – Les autres composants Les afficheurs (Layout) Les LookNFeel Petits conseils 16

17 DES CONTAINERS SPÉCIFIQUES JFrame : le cadre principal d'une application. Il peut contenir des menus et d'autres composants. JDialog : une fenêtre de dialogue avec l'utilisateur. Son « parent » (argument requis par ses créateurs) sert essentiellement à la placer dans l'écran. JApplet : classe de base pour les applets Java 2. Les applets sont des applications Java pouvant tourner à l'intérieur d'un navigateur Web. 17

18 JFRAME : ILLUSTRATION 18

19 JFRAME PAR LEXEMPLE 19 import javax.swing.*; public class TryWindow { static JFrame myWindow = new JFrame (''ceci est un titre''); public static void main (String[] args) { myWindow.setBounds (50, 100, 400, 150); myWindow.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); myWindow.setVisible(true); } (0,0) x y h w X=50 Y=100 W=400 H=150

20 JFRAME PAR LEXEMPLE 20 (0,0) x y h w setBounds définit la position et la taille setVisible rend visible la fenêtre setDefaultCloseOperation détermine ce qu'il se passe lorsque l'on ferme la fenêtre DISPOSE_ON_CLOSE - détruit le JFrame et ses composants mais ne termine pas l'application DO_NOTHING_ON_CLOSE HIDE_ON_CLOSE

21 AUTRES MÉTHODES setTitle (String) : pour mettre le titre de la fenêtre setSize (int width, int height) setLocation (int x, int y) : pour déplacer la fenêtre dispose () : pour fermer la fenêtre pack () : ajuste chaque composant à sa taille optimale et retaille la fenêtre 21

22 JDIALOG : CLASSES et BOÎTES DE DIALOGUES Il existe différentes classes pour créer des boîtes de dialogue : – JOptionPane : pour créer des boîtes de dialogue standards – JColorChooser : pour choisir une couleur – JFileChooser : pour permettre de sélectionner un fichier – ProgressMonitor : pour afficher la progression dune opération 22

23

24 JOPTIONPANE Permet de créer des boîtes de dialogue standards Permet de faire des avertissements Possède des éléments standardisés : – Réponse oui/non, – Icônes de danger, derreurs, … Est modifiable (boutons, icônes, …) 24 question information avertissement erreur

25 JCOLORCHOOSER Permet de créer une boîte de dialogue pour choisir une couleur Possède différents onglets correspond aux différents types dencodage de couleurs 25

26 JFILECHOOSER Définit une boîte de dialogue pour permettre sélectionner un fichier Possède des boîtes de dialogue par défaut : – Pour louverture (showOpenDialog), – Pour la sauvegarde (showSaveDialog ) 26

27 APPLET JAVA ÉTEND APPLET OU JAPPLET Sexécute dans une machine virtuelle (celle du navigateur web) et nécessite un fichier html Na pas de fonction main mais vit un cycle (run) Les principales méthodes sont : – init () : quand la page html est chargée la 1 ère fois – start () : après init et chaque fois que lon revient sur la page – stop () : quand on quitte la page html (on interrompt les méthodes lancées dans start) – destroy () : quand lapplet est terminée (on libère toutes les ressources) 27

28 EXEMPLE DAPPLET : CODE JAVA Applet HelloWorldApplet 28 import java.awt.*; Import java.applet.*; public class HelloWorldApplet extends Applet { Font f = new Font ( « Serif », Font.BOLD, 36); public void paint (Graphics g) { g.setFont(f); g.setColor(Color.red); g.drawString(getParameter (« Chaine »), 10, 30); }

29 LA BALISE 29 [ ]

30 SÉCURITÉ ET APPLET Une applet ne peut pas charger de librairies ou utiliser des méthodes natives Elle ne peut normalement pas lire ou écrire dans des fichiers de lhôte sur lequel elle sexécute Elle ne peut pas effectuer de connexions réseaux sauf sur lhôte dont elle provient Elle ne peut lancer aucun programme de lhôte sur lequel elle sexécute 30 Ces restrictions peuvent être levées par un certificat de sécurité (cf. jarsigner, policytool)

31 Hiérarchie de composants

32 HIÉRARCHIE DES CLASSES 32

33 Aperçu de Swing Les Containers Les containers Ont un LayoutManager –add / remove dun Component –Unicité de lieu –Indice des components Méthodes à connaître repaint() ! validate() ! setEnabled(true / false) : activé / désactivé (Rectangle) getBounds / setBounds(x,y, w, h) : positionne et dimensionne getWidth() : largeur / getHeight() : hauteur getX() et getY() : obtenir une coordonnée setVisible(true / false) getBackground et setBackground [objet Color, définition RGB]

34 La famille des panneaux 34

35 TYPES DE PANNEAUX Pour structurer les différents éléments graphiques, on utilise des containers qui font partis de la famille des panneaux. On retrouve : – Le JPanel : panneau de base, – Le JScrollPane : qui permet dobtenir des ascenseurs – Le JSplitPane : qui permet de diviser en 2 (seulement 2) – Le JTabbedPane : qui permet davoir différents onglets pour les différents sous-contenus 35

36 JPANEL Le container le plus utilisé pour structurer linterface Ne possède pas de réelles contraintes (la gestion de lorganisation des éléments est déléguée à un Layout) Peut contenir des sous-panneaux 36

37 JSCROLLPANE Permet dobtenir des ascenseurs de manière automatique, Est créé en lui associant le composant que lon souhaite pouvoir scroller Le composant inclus dans le JScrollPane doit implémenter linterface Scrollable Quelques éléments qui implémentent cette interface : – JTextField, – JTextArea, – JTree, – JTable 37

38 JSPLITPANE Permet de diviser en deux lespace zone Peut se construire avec les deux composants contenus dans chacune des zones Possède une orientation (HORIZONTAL_SPLIT ou VERTICAL_SPLIT ) 38

39 JTABBEDPANE Permet davoir des onglets Permet de mieux gérer lespace de travail Chaque onglet est créé avec sont panel associé Longlet peut posséder une icône en plus ainsi quun raccourci clavier (Mnemonic) Peut-être fait de manière équivalente avec un CardLayout (à ce moment, il ny a pas donglet ) 39

40 LES DIFFÉRENTS PANNEAUX DUN JFRAME, JDIALOG, JAPPLET Sobtiennent par : – getRootPane () zone de la fenêtre sous le titre – getContentPane () zone où les éléments sont ajoutés – getGlassPane () zone transparente dessinée au- dessus du JRootPane utilisé pour afficher des pop-up menus 40

41 Autres composants 41

42 LISTE NON EXHAUSTIVE DE COMPOSANTS SWING JButton, JLabel, JTextField : une ligne de texte, JTextArea : une zone de texte, JCheckBox : boîte à cocher, JRadioButton : bouton pour sélection unique (associé à ButtonGroup), JMenu et JMenuItem : un menu et ses éléments (inclus dans une JMenuBar) JPopMenu : un menu flottant, JToolTip : une bulle daide, … 42

43 CRÉATION DUN MENU Pour créer un menu, il faut : – Une barre de menu (JMenuBar), – Un menu (JMenu), – Des éléments dans ce menu (JMenuItem), Sur le menu, il est possible dajouter un Mnemonic – Est associé à un caractère (setMnemonic(char)) – Permet daccéder au menu directement en faisant : Alt+Char – Fonctionne également pour les boutons 43

44 CRÉATION DUN MENU Sur les JMenuItem il est possible dajouter des accélérateurs : – Permet dassocier une combinaison du type Ctrl+Touche – Se définit pas : setAccelerator(KeyStroke.getKeyStroke ( KeyEvent.LA_TOUCHE, ActionEvent.LE_MASQUE) 44

45 ILLUSTRATION DUN MENU 45 Remarque : Il est possible de coller un menu à droite, en utilisant une Glue : Box.createHorizontalGlue()

46 JLABEL Permet de définir un label Peut comporter : une icône, du texte ou les deux 46 ImageIcon ii = new ImageIcon(icon.jpg); Jlabel jl = new JLabel(text + icône, ii, JLabel.CENTER);

47 JLABEL Méthodes intéressantes : – setEnabled(boolean) : pour activer/désactiver la zone (permet de griser le label) – setHorizontalAlignement(constante) pour contrôler lalignement du texte 47

48 LES BORDURES Il est possible dattribuer une bordure à un JComponent : setBorder(border) Pour obtenir la bordure, on utilise les méthodes statiques de la classe BorderFactory : Border Factory.createEtchedBorder() 48

49 Aperçu de Swing Des composants JComponent Hérite de Container Méthodes de commodité getSize retourne une Dimension setSize : une Dimension ou deux entiers –Une position getLocation retourne un Point setLocation avec un Point ou deux entiers –Coordonnées Origine au coin supérieur gauche x (width) vers la droite et y (height) vers le bas –Méthode public void paint(Graphicsg ) –setPreferredSize –setDoubleBuffered(true/false) / isDoubleBuffered() –setOpaque(true / false) Dessin à lécran : paint appelle –paintComponent –paintBorder –paintChildren Les boutons – JButton /JToggleButton / JCheckBox / JRadioButton –Les champs textuels – JTextField/ JTextArea Etc…

50 Exemple import javax.swing.*; import java.awt.*; public class FlowerPower { public static void main(String[] args) { JFrame fenetre = new JFrame(); JPanel panel = new JPanel(); JLabel etiquette = new JLabel("Aujourd'hui: "); JCheckBox premier = new JCheckBox("Lundi"); JCheckBox deuxieme = new JCheckBox("Mardi"); JCheckBox troisieme = new JCheckBox("Mercredi"); JCheckBox quatrieme = new JCheckBox("Jeudi"); JCheckBox cinquieme = new JCheckBox("Vendredi", true); JCheckBox sixieme = new JCheckBox("Samedi"); JCheckBox septieme = new JCheckBox("Dimanche");

51 Exemple panel.add(etiquette); panel.add(premier); panel.add(deuxieme); panel.add(troisieme); panel.add(quatrieme); panel.add(cinquieme); panel.add(sixieme); panel.add(septieme); fenetre.setContentPane(panel); fenetre.setTitle("Wesh mate mon flow!"); fenetre.setBounds(100,100,200,200); fenetre.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); fenetre.setVisible(true); } }

52 FlowLayout par défaut

53 Afficheurs 53

54 COMMENT POSITIONNER LES COMPOSANTS ? 54

55 DEUX MANIÈRES Positionner de manière absolue, revient à : – Retirer tout gestionnaire daffichage (setLayout(null)) – Placer un par un les éléments en leur donnant leur position dans la fenêtre (méthode setBounds) Positionner en utilisant des gestionnaires daffichage 55

56 MISE EN PAGE DES COMPOSANTS La mise en page des éléments seffectue à laide dun gestionnaire daffichage (Layout), Tous les containers possèdent une méthode setLayout qui permet de spécifier le type de gestionnaire daffichage On peut ajouter des contraintes lorsquon ajoute un composant 56

57 LES DIFFÉRENTS TYPE DE LAYOUT BorderLayout, GridLayout, FlowLayout, CardLayout, BoxLayout, GridBagLayout 57

58 UTILISATION DUN LAYOUT 1.Création du layout Exemple : BorderLayout bl = new BorderLayout()) 2. Association au container : panel.setLayout(bl) 3.Ajout de composants au container, avec ou sans contrainte Exemple : panel.add(button, BorderLayout. EAST) 58

59 BORDERLAYOUT Définit des zones dans lesquelles ajouter des éléments Intéressant pour le panneau principal 59

60 GRIDLAYOUT Définit une grille où ajouter les composants Lajout des composants se fait sans préciser de contraintes On déclare le layout de la manière suivante : – new GridLayout(0,2) // row, column 0 signifie autant quon veut 60

61 FLOWLAYOUT On ajoute au fur et à mesure les composants, si cela ne tient pas dans la ligne, on commence une nouvelle ligne Gestionnaire daffichage par défaut des JPanel Possibilité de spécifier lalignement 61

62 CARDLAYOUT Permet dempiler des composants (suivant des panneaux) Le dernier ajouté ou celui spécifié est visible Concept de la pile de cartes 62

63 BOXLAYOUT Définit une boîte dans laquelle seront ajoutés les différents composants Cette boîte peut-être : – Horizontale : X_AXIS – Verticale : Y_AXIS On ajoute les éléments au fur et à mesure 63

64 GRIDBAGLAYOUT (1/2) Gestionnaire daffichage relativement compliqué à mettre en place Demande de définir toutes les contraintes des différents composants à placer Place les composants au-travers une grille modulaire 64

65 GRIDBAGLAYOUT (2/2) 65

66 Aperçu de Swing et aussi… Les îcones : javax.swing.ImageIcon créer avec le nom dun fichier image par exemple Menus : les JMenuBar, JMenu, JMenuItem Les Layout :Basé sur PreferredSize ou une maximisation de lélément BorderLayout –par défaut dans une fenêtre –ajout en précisant la zone –add("North", comp) FlowLayout : en ligne GridLayout : en tableau GridBagLayout : avec des contraintes etc.

67 Modèle & Vue

68 MODÈLE/VUE AVEC LES JLIST ET LES JTABLE Il est possible de partager le modèle de données dune JTable ou dune JList à dautres composants considérés comme dautres vues de lobjet JTable ou JList Par exemple : une liste de noms affichée dans une JList. La JList est une vue (interactive) de la liste de noms permettant la sélection délément. Une représentation tabulaire de la même liste est une autre vue Un texte qui indique le nombre déléments de la liste est une autre vue du modèle 68

69 ILLUSTRATION 69

70 Définition du modèle associé Si le modèle est décrit par une interface ListModel / TableModel prédéfinie, Linterface permet dexpliciter comment gérer les données du modèle et dajouter des vues (écouteurs de changements sur le modèle) Rem : il existe généralement une classe Adapter nommée Default Model avec =List ou Table Si le modèle change, il génère un événement et notifie les vues (via des méthodes en fire ) 70

71 Définition dune nouvelle vue Pour quun autre composant soit considéré comme une vue, il doit : – Implémenter linterface adéquate pour être écouteur de lévénement de changement de modèle – Se faire ajouter à la liste des écouteurs du modèle 71

72 JLIST Possède différents constructeurs : – Données fixes : JList (Vector listData) JList (Object[] listData) – Données modifiables : JList (ListModel dm) 72

73 JLIST Exemple 73 String listData[]= {…,« Carlos »,…, « Ramier»}; DefaultListModel model = new DefaultListModel(); for (int i=0; i

74 JLIST : LE MODÈLE ASSOCIÉ Pour le modèle, utiliser la classe DefaultListModel. Ce modèle stocke les objets sous forme de vecteur et fournit les méthodes suivantes : – addElement (Object), – boolean contains(Object), – boolean removeElement(Object) – Object get(index), Object remove(index), int size() – addListDataListener (ListDataListener l), remove… – fireContentsChanged,fireIntervalAdded, fireIntervalRemoved (Object source, int index0, int index1) 74

75 ILLUSTRATION 75

76 JLIST Possède une méthode qui permet de spécifier le mode de sélection : setSelectionMode (int mode). mode peut valoir : – SINGLE_SELECTION – SINGLE_INTERVAL_SELECTION – MULTIPLE_INTERVAL_SELECTION Possède une méthode addListSelectionListener () qui écoute un ListSelectionEvent e qui est émis à chaque fois quune sélection change et implémente une méthode : valueChanged 76

77 JLIST : LA VUE Une vue dune JList implémente linterface ListDataListener. Il y a trois méthodes : – void contentsChanged(ListDataEvent e) : contenu de la liste a changé – void intervalAdded(ListDataEvent e) – void intervalRemoved(ListDataEvent e) 77 l

78 JLIST : PLUSIEURS VUES ?! Créer un modèle instance de DefaultListModel et le mémoriser. Créer ensuite la liste avec ce modèle. Pour chaque composant désirant être informé des changements ( = dautres vues ou le contrôleur) : – Mémoriser le modèle ( = le stocker dans un membre) – Implémenter ListDataListener – Enregistrer le composant dans le modèle avec addListDataListener 78

79 JTABLE Un constructeur possible de JTable : – JTable (Object[][] rowData, Object[] columnNames) – On peut accéder au modèle sous-jacent avec la méthode : TableModel getModel() Un autre constructeur avec directement le modèle : 79 String nomsCol[]={«Prenom», «Nom»}; String rows[][] = { {«Dinah»,«Cohen»}, …, {«Said», «Kharrazen»}}; DefaultTableModel model = new DefaultTableModel(rows, nomsCol); JTable table = new JTable(model);

80 JTABLE : LE MODÈLE ASSOCIÉ Il existe 3 différents éléments pour créer un modèle : – Linterface TableModel – La classe AbstractTableModel qui implémente TableModel – La classe DefaultTableModel DefaultTableModel est le plus simple à utiliser, quelques constructeurs associés : – DefaultTableModel(int row, int col) – DefaultTableModel(Object[][] data, Object[] columnNames) – DefaultTableModel(Vector data, Vector columnNames) – … 80

81 JTABLE : LA VUE Une vue implémente linterface TableDataListener Il y a une méthode : – void tableChanged(TableModelEvent e) Lévénement associé TableModelEvent : – int getType() : INSERT, UPDATE, DELETE – int getColumn() – int getFirstRow() – int getLastRow() 81

82 JTABLE : PLUSIEURS VUES ?! Créer un modèle, par exemple une instance de DefaultTableModel et le mémoriser Pour chaque composant désirant être informé des changements (les vues et/ou le contrôleur) : – Mémoriser le modèle – Implémenter TableModelListener – Enregistrer le composant dans le modèle avec : addTableModelListener 82

83 SYNTHESE

84 Hiérarchie Swing

85 Aperçu de Swing Arch swing_palettes.html

86 Aperçu de Swing Les Containers Les containers Ont un LayoutManager –add / remove dun Component –Unicité de lieu –Indice des components Méthodes à connaître repaint() ! validate() ! setEnabled(true / false) : activé / désactivé (Rectangle) getBounds / setBounds(x,y, w, h) : positionne et dimensionne getWidth() : largeur / getHeight() : hauteur getX() et getY() : obtenir une coordonnée setVisible(true / false) getBackground et setBackground [objet Color, définition RGB]

87 Aperçu de Swing Des composants JComponent Hérite de Container Méthodes de commodité getSize retourne une Dimension setSize : une Dimension ou deux entiers –Une position getLocation retourne un Point setLocation avec un Point ou deux entiers –Coordonnées Origine au coin supérieur gauche x (width) vers la droite et y (height) vers le bas –Méthode public void paint(Graphicsg ) –setPreferredSize –setDoubleBuffered(true/false) / isDoubleBuffered() –setOpaque(true / false) Dessin à lécran : paint appelle –paintComponent –paintBorder –paintChildren Les boutons – JButton /JToggleButton / JCheckBox / JRadioButton –java.awt.ButtonGroup (méthode add) Les champs textuels – JTextField/ JTextArea Etc…

88 Aperçu de Swing et aussi… Les îcones : javax.swing.ImageIcon créer avec le nom dun fichier image par exemple Menus : les JMenuBar, JMenu, JMenuItem Les Layout :Basé sur PreferredSize ou une maximisation de lélément BorderLayout –par défaut dans une fenêtre –ajout en précisant la zone –add("North", comp) FlowLayout : en ligne GridLayout : en tableau GridBagLayout : avec des contraintes etc.

89 Aperçu de Swing Les Containers Les containers Ont un LayoutManager –add / remove dun Component –Unicité de lieu –Indice des components Méthodes à connaître repaint() ! validate() ! setEnabled(true / false) : activé / désactivé (Rectangle) getBounds / setBounds(x,y, w, h) : positionne et dimensionne getWidth() : largeur / getHeight() : hauteur getX() et getY() : obtenir une coordonnée setVisible(true / false) getBackground et setBackground [objet Color, définition RGB]

90 Exemple de code

91 EXEMPLE DAPPLICATION JAVA SWING 91 JFrame frame = new JFrame("TopLevelDemo"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //Create the menu bar. Make it have a green background. JMenuBar greenMenuBar = new JMenuBar(); greenMenuBar.setOpaque(true); /RVB greenMenuBar.setBackground(new Color(154, 165, 127)); greenMenuBar.setPreferredSize(new Dimension(200, 20)); //Create a yellow label to put in the content pane. JLabel yellowLabel = new JLabel(); yellowLabel.setOpaque(true); yellowLabel.setBackground(new Color(248, 213, 131)); yellowLabel.setPreferredSize(new Dimension(200, 180)); //Set the menu bar and add the label to the content pane. frame.setJMenuBar(greenMenuBar); frame.getContentPane().add(yellowLabel,BorderLayout.CENTER);


Télécharger ppt "POO3 Introduction aux IHM et à la réflexivité Java Vos premiers pas en Swing Audrey Occello Cédric Joffroy Anne-Marie Dery."

Présentations similaires


Annonces Google