Swing et la gestion des événements
|
|
|
- Gabrielle Doucet
- il y a 10 ans
- Total affichages :
Transcription
1 Chapitre 5 Swing et la gestion des événements L API SWING permet de réaliser des interfaces graphiques plus sophistiquées que celles que permettait AWT, son ancêtre. Outre les nombreuses classes fournissant des composants graphiques, il faut aussi connaître le mécanisme complexe qui permet de gérer les événement qui surviennent dans cet environnement. 5.1 L interface graphique de Java Java 1.0 était déjà pourvu d une interface graphique, nommée AWT. Elle a rapidement montré ses limites. On la trouve toujours dans l API JAVA parce que certaines de ses classes sont utilisées par la nouvelle interface graphique, nommée SWING. Concurremment, IBM a développé une autre interface, nommée SWT, qu on trouve notamment utilisée par le produit Eclipse. SWT présente un certain nombre d avantages sur Swing, notamment son aspect esthétique. Je n aborderai que Swing parce que c est l interface standard, toujours présente sur une machine Java, et parce qu elle est fortement intégrée dans NetBeans, qui dispose de puissants outils pour la gérer. Swing permet de réaliser deux types d interfaces : une interface indépendante et une interface intégrée dans un navigateur. Pour l essentiel, les deux technologies font appel aux mêmes composants, seules diffèrent les initialisations. Les applets ne seront pas présentées dans cette initiation. Selon qu on programme avec un éditeur classique ou avec l aide de NetBeans, on aura deux techniques différentes pour réaliser une fenêtre : dans un programme réalisé sans assistance, la fenêtre principale sera une instance de JFrame qu il faudra créer (généralement dans la méthode main()). On ajoutera à la main les composants avant d afficher la fenêtre (à l aide de l appel de méthode setvisible (true) 1 ). si on utilise l assistance de NetBeans, la préparation d une fenêtre passe par la création de deux fichiers : un fichier d extension.form contient, sous format XML, tous les paramètres choisis par l utilisateur : composants, tailles, positions, événements gérés... un fichier de classe normal contient les instructions Java pour réaliser des instances de fenêtres conformes à ce qu a prévu le programmeur. Les deux fichiers sont modifiés par le biais d une interface graphique accessible par le bouton Design. Tous les paramètres définis par l interface graphique sont placés dans des zones protégées du fichier de classe, zone que NetBeans ne permet pas de modifier. La classe ainsi définie contient uniquement des variables d instance, par défaut privées, correspondant aux composants placés dans la fenêtre, des méthodes privées permettant 1 La méthode show est dépréciée. 69
2 70 CHAPITRE 5. SWING ET LA GESTION DES ÉVÉNEMENTS leur initialisation et des call-backs, méthodes réduites à un en-tête avec des paramètres qui seront appelées par les différents événements pris en compte par l interface. Le travail du programmeur consiste uniquement à programmer le contenu de ces callbacks Un exemple de base (réalisé sans NetBeans) Un première fenêtre va reprendre les éléments minimum : la fenêtre avec son titre (placé comme paramètre du constructeur) un layout de base, qui se contente de placer les composants à la queue leu leu, pour autant que la largeur de la fenêtre le permette, et qu on instancie avant de l associer à l aide de la méthode setlayout() quatre composants, deux étiquettes, une zone de texte et une zone de mot de passe, qu on place directement sur la fenêtre à l aide de la méthode add(). Le fait de ne pas leur faire correspondre des variables d instance risque de rendre leur gestion assez complexe. la méthode pack() donne à la fenêtre des dimensions suffisante pour afficher ses composants. il ne faut pas oublier de préciser ce qui arrivera en cas de fermeture de la fenêtre (ici fermer l application, faute de quoi on garderait un programme sans interface en toile de fond). private static void mydisplay() { JFrame fenetre=new JFrame("Ma première fenêtre"); fenetre.setlayout(new FlowLayout(LEFT,5,5)); fenetre.add(new JLabel("Pseudonyme: ")); fenetre.add(new JTextField(10)); fenetre.add(new JLabel("Mot de passe: ")); fenetre.add(new JPasswordField(10)); fenetre.pack(); fenetre.setdefaultcloseoperation(jframe.exit_on_close); fenetre.setvisible(true); Utilisation de NetBeans La place manque pour décrire le fonctionnement de l interface graphique de NetBeans, qui se révèle assez intuitive. L exemple suivant tente de réaliser la même fenêtre que dans la sous-section précédente. L illustration de la figure 5.1 montre les trois zones principales : l inspecteur permet de naviguer dans les composants la fenêtre de création montre l aspect de la fenêtre 2 En principe, le contenu des callbacks est préservé en cas de modification de l interface, sauf si l événement qui est censé l appeler est supprimé. Si le code est spécialement complexe, il peut être prudent de le protéger en faisant une copie, ou mieux en le plaçant dans une autre méthode que le callback se contentera d appeler. L existence d une autre méthode est aussi un moyen simple d assigner un même traitement à plusieurs événements.
3 5.1. L INTERFACE GRAPHIQUE DE JAVA JA C Q U E S THOORENS - H T T P://W W W.T H O O R E N S.N E T FIG. 5.1 L interface Matisse la zone de propriétés permet d initialiser le composant avec les valeurs correctes des différents paramètres et à assigner les événements. Les valeurs modifiées se distinguent des valeurs par défaut par leur mise en caractères gras. Voici le code généré par NetBeans. On notera la présence d une méthode main(), destinée à faciliter les tests. On y voit qu il faut instancier un objet de la classe Fenetre(). J ai pris soin de renommer les composants, ce qu il est conseillé de faire dès que possible. package demoswing; /** * jacques */ public class Fenetre extends javax.swing.jframe { /** Creates new form Fenetre */ public Fenetre() { initcomponents(); /** This method is called from within the constructor to * initialize the form.
4 72 CHAPITRE 5. SWING ET LA GESTION DES ÉVÉNEMENTS * WARNING: Do NOT modify this code. The content of this method is * always regenerated by the Form Editor. // <editor-fold defaultstate="collapsed" desc="generated Code "> private void initcomponents() { txtnom = new javax.swing.jtextfield(); lblnom = new javax.swing.jlabel(); lblpwd = new javax.swing.jlabel(); pwdpwd = new javax.swing.jpasswordfield(); btnlogin = new javax.swing.jbutton(); setdefaultcloseoperation(javax.swing.windowconstants. EXIT_ON_CLOSE); settitle("login"); lblnom.settext("nom:"); lblpwd.settext("mot de passe:"); btnlogin.settext("login"); pack(); // </editor-fold> /* Pour simplier j ai enlevé le code concernant la gestion du layout, particulièrement obscur */ /** args the command line arguments */ public static void main(string args[]) { java.awt.eventqueue.invokelater(new Runnable() { public void run() { new Fenetre().setVisible(true); ); // Variables declaration - do not modify private javax.swing.jbutton btnlogin; private javax.swing.jlabel lblnom; private javax.swing.jlabel lblpwd; private javax.swing.jpasswordfield pwdpwd; private javax.swing.jtextfield txtnom; // End of variables declaration Conseils d utilisation Il me semble futile de s obliger à programmer la création d une interface un peu complexe. L outil Matisse inclus dans NetBeans permet de concevoir et de modifier facilement l interface
5 5.2. COMPOSANTS DE BASE 73 d une application. On peut réaliser des fenêtres (JFrame) ou des panneaux (JPannel) à intégrer dans d autres fenêtres (par exemple dans des onglets ou des panneaux superposés). Si on veut modifier le comportement de la classe ainsi générée, on peut utiliser deux techniques : la première consiste à placer son code dans le fichier de la classe sous la forme de méthodes ou d instructions dans un callback. Le danger est qu une modification de l interface ne vienne perturber ou effacer ce code. la seconde consiste à mettre un minimum de code dans la classe «graphique» et à produire une classe dérivée pour placer son code. Le code contenu dans la classe-mère se limitera à faire ce qui ne peut être fait dans la classe fille par suite de problèmes de visibilité. 5.2 Composants de base Composants de saisie Multiligne Multistyle Composants inclus Classe Utilisation JTextField Champ de saisie simple Non Non Non JPasswordField Champ pour les mots de passe Non Non Non JFormatedTextField Lecture formatée des nombres et des dates Non Non Non JTextArea Champ de saisie sur plusieurs lignes Oui Non Non JEditorPane Texte formaté en RTF ou HTML Oui Oui Non JTextPane Feuilles de styles, mise en forme et inclusion d autres composants Oui Oui Oui Composants de présentation Classe Utilisation JLabel Étiquette JToolTip Info bulle JSeparator Séparateur JProgressBar Barre de progression Composants de choix Classe Utilisation JButton Bouton JCheckBox Case à cocher JToggleButton Bouton à bascule JRadioButton Bouton radio JList Liste de valeurs JComboBox Liste déroulante JSpinner Sélection de nombre JSlidder Choix par glissière JScrollBar Ascenseur Classe JFrame JApplet JWindow JDialog JInternalFrame Composants arbres et tableaux Classe Utilisation JTree Arbre hiérarchique JTable Tableau à données éditables ou non Composants de menu Classe Utilisation JMenuBar Barre de menu (détachable) JMenu Menu JMenuItem Élément de menu JCheckBoxMenuItem Élément de menu coché JRadioButtonMenuItem Élément de menu «radio» JPopupMenu Menu contextuel Conteneurs fenêtres Utilisation Fenêtre de base d une application indépendante Fenêtre de base d une application intégrée à un navigateur Fenêtre sans décoration Boîte de dialogue modale ou non modale Fenêtre interne d un document MDI
6 74 CHAPITRE 5. SWING ET LA GESTION DES ÉVÉNEMENTS Classe Conteneurs intermédiaires Utilisation JToolBar JTabbedPane JSplitPane JScrollPane JLayeredPane JDesktopPane JRootPane JPanel Barre d outils détachable Panneau à onglets Panneau partagé Panneau à ascenseur Panneau à plusieurs couches Panneau des fenêtres MDI Panneau principal d une fenêtre Panneau pour le rangement d autres composants JA C Q U E S THOORENS - H T T P://W W W.T H O O R E N S.N E T Classe JColorChooser JFileChooser JOptionPane Boîtes de dialogues standards Utilisation Dialogue de sélection d une couleur Dialogue de sélection d un fichier Boîte de dialogue (message, saisie, confirmation) La suite de la section abordera les composants les plus utilisés JLabel Description Étiquette servant à afficher des informations non modifiables par l utilisateur. Elle n est modifiable que par programmation. Outre son utilisation en conjonction avec des zones de texte, elle peut servir pour afficher des informations (par exemple dans un panneau sud, une ligne de statut). Initialisation Utiliser la méthode void settext(string) ou un constructeur. Lecture Utiliser la méthode String gettext(). Événements Une étiquette est peu susceptible de déclencher un événement. Les événements prévus pour elle sont très peu employés.
7 5.2. COMPOSANTS DE BASE 75 Exemple Le code suivant, associé à un bouton, remplace le texte de l étiquette lblnombre qui contient un nombre écrit en lettre par le nombre suivant (en faisant un cycle de cinq nombres). private void btncompteractionperformed(java.awt.event.actionevent evt) { String[] nombres = {"un","deux","trois","quatre","cinq"; String scontenu=lblnombre.gettext(); int ipos=0; while(!nombres[ipos]equals(contenu)) ipos++; ipos=++ipos%5; lblnombre.settext(nombres[ipos]); JTextField JA C Q U E S THOORENS - H T T P://W W W.T H O O R E N S.N E T Description Cette zone de texte permet l entrée d un texte court pour encoder des données simples. Initialisation Ici encore, c est la méthode void settext(string). On peut aussi passer la valeur au constructeur, mais il n est pas accessible dans l environnement NetBeans. Lecture La méthode String gettext() est commode pour récupérer du texte. Événement De nombreux événements sont liés à une zone de texte. Il peut être utile d utiliser l événement KeyReleased pour faire une mise à jour d un autre champ en fonction de ce qui est en cours de frappe. Curieusement, l événement KeyTyped vient toujours une touche en retard. Exemple Deux extraits de code montrent comment réinitialiser un champ et comment réagir à une modification. private void txtnombrekeyreleased(java.awt.event.keyevent evt) { lblnombre2.settext(txtnombre.gettext());
8 76 CHAPITRE 5. SWING ET LA GESTION DES ÉVÉNEMENTS private void btnresetactionperformed(java.awt.event.actionevent evt) { txtnombre.settext("0"); lblnombre2.settext(txtnombre.gettext()); Remarque La zone de texte est un des nombreux composants permettant d afficher du texte. Il fait partie d une hiérarchie, qui sera évoquée plus loin. Il possède aussi un contenu gérable à travers la classe Document. On peut par ce biais : avoir un contrôle parfait sur le nombre de caractères contenus dans la zone de texte (et par exemple, en refuser) gérer plus finement l interaction du composant avec le contexte global JPasswordField JA C Q U E S THOORENS - H T T P://W W W.T H O O R E N S.N E T Description Très utile pour saisir un mot de passe. Initialisation Possible, mais pas conseillée. On peut modifier le caractère affiché par la méthode setecho- Char(char), dans l exemple, le caractère $. Lecture Bien que ce composant descende de JTextField, la méthode gettext()est dépréciée. On recommande l usage de char[] getpassword()dont le test est nettement plus compliqué. Nous verrons dans l exemple deux méthodes pour opérer la comparaison des mots de passe et d une valeur interne. Événement Il n est pas conseillé de faire autre chose que lire un mot de passe à l aide de ce composant. Exemple private void btnloginactionperformed(java.awt.event.actionevent evt) { String message="mot de passe incorrect"; // Le mot de passe est éclaté dans un tableau de char char[] tab = { 1, 2, 3, 4 ; if(arrays.equals(pwdlogin.getpassword(),tab))
9 5.2. COMPOSANTS DE BASE 77 message="mot de passe correct"; // transformation du tableau de char en String if(string.valueof(pwdlogin.getpassword()).equals("1234")) message="mot de passe correct - 2"; JOptionPane.showMessageDialog(this,message,"Connexion", JOptionPane.WARNING_MESSAGE); JButton Description Le bouton est l un des composants les plus fréquents dans une interface. Il sert souvent à lancer des tâches ou fermer des fenêtres. Initialisation Souvent initialisé par son créateur, le bouton peut se voir modifier son texte par la méthode settext(). Lecture Peu fréquente, puisque seul le programme peut modifier le texte figurant sur le bouton. La méthode gettext() fonctionne parfaitement. Événement Il dispose de toute une panoplie pour réagir au passage de la souris. Son événement préféré est sans nul doute ActionPerformed qui correspond à l enfoncement et au relâchement du bouton. Exemple On voit ici une simple bascule entre deux textes (Oui et Non) affichés sur le bouton. private void btnyesnoactionperformed(java.awt.event.actionevent evt) { btnyesno.settext(btnyesno.gettext().equals("oui")?"non":"oui"); JCheckBox
10 78 CHAPITRE 5. SWING ET LA GESTION DES ÉVÉNEMENTS Description Il s agit de la traditionnelle case à cocher, qui peut donc prendre deux valeurs. Rappelons qu une telle case est toujours indépendante. On pourra également utiliser des instances de JToggleButton et JCheckBoxMenu, qui fonctionnent de la même façon. Initialisation Elle se fait au moyen de la méthode void setselected(boolean b). Certaines surcharges du constructeur permettent aussi de choisir l état initial du composant. Lecture La méthode boolean isselected() renvoie l état de la case. Événement Il arrive fréquemment qu une partie de l interface soit modifiée par le changement d état d une case à cocher. Deux événements permettent de rendre compte de cela : ActionPerformed et ItemStatChanged, qui n ont pas exactement la même signification, puisque l état peut changer par suite d un appel de méthode. Exemple Dans l exemple suivant, on voit que l état de deux cases (Bête et Méchant) commande l affichage d une description. private void miseajourdescription() { StringBuffer description=new StringBuffer(""); if(chkbete.isselected()) description.append("bête"); if(chkmechant.isselected()) if(description.length()>0) description.append(" et méchant"); else description.append("méchant"); lbldescription.settext(description.tostring()); JRadioButton et ButtonGroup Description Les boutons «radio» vont par groupes : seul un bouton du groupe peut être sélectionné. Leur manipulation est un peu plus délicate.
11 5.2. COMPOSANTS DE BASE 79 Placement sur le formulaire Logiquement, les boutons radio devraient figurer dans un même JPanel, pour des raisons de lisibilité. Mais cette proximité ne suffit pas à les faire membre du même groupe. Il faut placer un objet de type ButtonGroup dans la feuille et associer les différents membres du groupe à ce ButtonGroup 3. À partir de ce moment, les boutons seront synchronisés. Initialisation Par défaut, un groupe de boutons radio se présentent sans bouton préalablement sélectionné. On peut néanmoins choisir l un des boutons à l aide de sa méthode setselected(boolean). En cas d appel de cette méthode, tout bouton du groupe préalablement sélectionné sera désélectionné. Il n existe pas de moyen simple de les désélectionner tous, si ce n est en leur adressant un message à chacun. Lecture La lecture individuelle d un bouton se fait à l aide de la méthode boolean isselected(). Pour savoir quel bouton est sélectionné dans un groupe, c est beaucoup plus complexe. Heureusement, dans la plupart des cas, le problème n est pas tellement d avoir accès au bouton, mais de connaître l information que l utilisateur a voulu transmettre. Je propose ici trois méthodes 4 : Solution 1 : 1). Parcourir les boutons pour déterminer quel bouton est sélectionné (voir l exemple Solution 2 : Gérer soi-même la valeur renvoyée : cela suppose de définir une variable qui reflètera toute modification de l état des boutons du groupe (par du code appelé par ces événements). Solution 3 : Interroger directement le modèle du bouton. Cette méthode semble plus directe, mais elle présente deux inconvénients. Si aucune sélection n est opérée, aucun modèle n est renvoyé (valeur null), il n est donc pas question d appeler ses méthodes sans précaution. D autre part, un modèle ne donnant pas accès aux attributs du bouton, il faut initialiser explicitement la chaîne renvoyée par getactioncommand(), par défaut nulle (voir exemple 2). Le comportement de cette méthode est assez irritant. Appliquée à un descendant de JAbstractButton, elle renvoie l étiquette du bouton quand aucune chaîne spécifique n a été attribuée pour le nom de la commande. Par contre, au niveau du modèle, une valeur nulle n est pas remplacée (et ne pourrait pas l être puisque l étiquette n est pas accessible). Pour couronner le tout, NetBeans recopie l étiquette dans la liste des propriétés, mais ne fait appel à setactioncommand() que quand la propriété a été modifiée par le programmeur. 3 Cela peut se faire dans NetBeans en sélectionnant les différents boutons puis en modifiant la valeur de la propriété. Il faut noter que l objet ButtonGroup n apparaît pas dans la hiérarchie des composants visuels, mais dans le groupe Other Components. 4 J ai trouvé sur Internet une classe JButtonGroup qui se dit plus performante que ButtonGroup. Outre le fait qu elle s intègre mal à NetBeans, je ne suis pas parvenu à la faire fonctionner. La principale différence de cette classe par rapport à la classe standard est qu elle mémorise les boutons et non leur modèle.
12 80 CHAPITRE 5. SWING ET LA GESTION DES ÉVÉNEMENTS Événement La gestion des événements n est pas trop simple avec l interface de NetBeans. Si on veut éviter de devoir définir un callback par bouton, on peut définir un callback commun en tapant soi-même son nom dans la fenêtre accessible uniquement par le bouton marqué de trois points dans l onglet events de la fenêtre des propriétés. Il n est pas possible de faire la même chose par le menu contextuel JA C Q U E S THOORENS - H T T P://W W W.T H O O R E N S.N E T L événement actionperformed est provoqué à chaque modification du groupe. Comme tous les gestionnaires d événements, il transmet un Event dont on peut invoquer la méthode getactioncommand() pour obtenir le contenu de l étiquette du bouton. Exemples Exemple 1 : interroger le bouton sélectionné dans un groupe Il n est pas nécessaire de placer les boutons dans un tableau puisque l objet ButtonGroup peut en renvoyer l énumération (méthode getelements()). for(enumeration<abstractbutton> langues =grplangue.getelements(); langues.hasmoreelements();){ AbstractButton ab = langues.nextelement(); if(ab.isselected()) System.out.println(ab.getText()); Exemple 2 : faire appel au modèle du bouton sélectionné dans un groupe Il convient d abord de recopier les étiquettes pour que l identification du bouton soit possible (on peut évidemment préférer initialiser le nom de la commande avec une valeur différente). Le mieux est de placer la boucle dans le constructeur de la classe, juste après l appel de initcomponents() : initcomponents(); for(enumeration<abstractbutton> enab =grplangue.getelements(); enab.hasmoreelements();){ AbstractButton ab=enab.nextelement(); ab.setactioncommand(ab.gettext());
13 5.2. COMPOSANTS DE BASE 81 L identification de la valeur choisie est maintenant plus simple. ButtonModel bm = grplangue.getselection(); if(bm!=null)system.out.println("m2 "+bm.getactioncommand()); A noter que, si on initialise l un des boutons avant de lancer le programme, comme il n est pas possible de désélectionner tous les boutons, on peut se passer de vérifier que la variable bm n est pas nulle JList Description Les listes permettent d afficher plusieurs valeurs et d un sélectionner une ou plusieurs (selon le paramétrage original). Comme le contenu de la liste peut dépasser l espace prévu à l écran, il est conseillé de placer les listes dans un JScrollPane. La version 5.0 de Net- Beans le fait systématiquement (les ascenseurs n apparaissent que si c est nécessaire). Initialisation L initialisation porte sur le comportement de la sélection (SINGLE_SELECTION, SIN- GLE_INTERVAL_SELECTION ou MULTIPLE_INTERVAL_SELECTION) et sur le contenu de la liste. La liste ne se réduit pas nécessairement à une simple énumération de texte (ce que propose de générer NetBeans en créant un modèle à l aide d une classe anonyme). La liste, par l entremise de son modèle peut contenir n importe quel objet. Il faut simplement veiller à ce qu il s affiche de manière lisible (emploi de sa méthode tostring()). Voici un exemple d initialisation pour une liste à choix multiple contenant des objets quelconques : lstformations.setselectionmode( ListSelectionModel.MULTIPLE_INTERVAL_SELECTION); DefaultListModel model= new DefaultListModel(); lstformations.setmodel(model); model.removeallelements(); model.addelement("pmp"); model.addelement("langage procédural"); model.addelement("sgbd"); model.addelement(new Date());
14 82 CHAPITRE 5. SWING ET LA GESTION DES ÉVÉNEMENTS Lecture Selon le mode de sélection choisi, on utilisera les méthodes getselectionindex() ou getselectionindices() pour récupérer le ou les indices des objets à récupérer depuis le modèle (voir exemple avec plusieurs indices potentiels). On notera que getmodel() renvoie une valeur de type ListModel qu on peut éventuellement caster sur le type de modèle choisi à l initialisation si c est nécessaire. Événements Différents événements sont écoutés par les listes, essentiellement liés à la gestion de la souris. Exemple private void btnlecturelisteactionperformed(java.awt.event.actionevent evt) { int[] choisis =lstformations.getselectedindices(); ListModel modele = lstformations.getmodel(); System.out.println("=========================================="); for(int i : choisis) System.out.println(modele.getElementAt(i)); 5.3 Mécanisme des événements NetBeans offre une méthode très confortable pour gérer les événements de l interface graphique : il produit automatiquement le code d écoute et procure un callback qu il suffit de modifier pour qu un événement donné produise son effet. Comme il fait appel à une classe anonyme, le code est à la limite de la lisibilité. Dans cette section, nous allons gérer manuellement les événements d un bouton de manière à mieux en comprendre le mécanisme. L exemple sera simple : le survol d un bouton par la souris va faire changer la couleur du fond du bouton Utilisation de classes publiques ou privées Un événement n est rien d autre qu une modification du contexte d une application qui doit entraîner des répercutions sur d autres parties de l application : l appui sur un bouton doit ouvrir une fenêtre ou incrémenter la valeur d une variable. L interface graphique possède des dizaines d événements internes qui font que certaines manipulations du clavier ou de la souris entraînent des modifications de l aspect de l interface. En général, le programmeur ne doit pas s en soucier. Si le bouton semble s enfoncer quand on pousse dessus, c est normal. Par contre, on voudrait que l enfoncement s accompagne d une action dans l application, alors que les concepteurs du bouton n avaient aucune connaissance de ce que contient l application. La gestion des évènements permet de mettre en relation deux ou plusieurs classes qui ne se connaissent pas mutuellement. L ajout d une gestion d événements à un composant susceptible de les gérer se déroule en trois phases : définir une classe listener liée au type d événement qu on veut prendre en compte, prévoir les traitements spécifiques (à placer dans les méthodes de la classe listener
15 5.3. MÉCANISME DES ÉVÉNEMENTS 83 FIG. 5.2 Exemple de gestion d événement ou indirectement dans des callback) et enfin établir une liaison entre l objet susceptible de provoquer l événement et la classe qui va le gérer concrètement. Étape n 1 : définition d une classe listener Heureusement Java, a prédéfini une série d événements qui peuvent se produire dans une interface graphique. Pour créer une classe listener, il suffit alors de dériver la nouvelle classe d une classe existante et de surdéfinir les méthodes qui correspondent aux événements précis que l on va gérer. Il est aussi possible de réaliser une interface, mais cela nous oblige à définir du code pour les méthodes qui ne nous intéressent pas. Les classes prédéfinies possèdent des méthodes qui ne font rien et ne doivent pas nécessairement être redéfinies. Pour ce qui concerne la gestion de la souris, on peut par exemple réaliser l interface MouseListener qui comporte cinq méthodes à définir : mouseclicked, mousepressed, mousereleased, mouseentered et mouseexited. Si on ne veut prendre en compte que les deux dernières méthodes, ce qui est notre cas, il sera plus simple de dériver notre classe de MouseAdapter. class ReponseASouris extends MouseAdapter{ // code à implémenter
16 84 CHAPITRE 5. SWING ET LA GESTION DES ÉVÉNEMENTS Étape n 2 : spécification des traitements à réaliser En fonction de la classe définie lors de l étape précédente, on va définir les méthodes spécifiques permettant les traitements. Comme toujours en informatique, on va essayer de favoriser la réutilisation du code. Deux méthodes sont possibles : on peut définir des traitements qui ne mentionnent pas réellement les objets concernés. Par exemple, les deux méthodes suivantes vont mettre en rouge la surface de n importe quel bouton qui déclencherait l événement. On y parvient par l appel de la méthode getsource() sur l objet passé en argument, qui n est autre que l événement déclencheur 5. public void mouseentered(java.awt.event.mouseevent e) { JButton b = (JButton) e.getsource(); oldcolor = b.getbackground(); b.setbackground(new Color(255,128,128)); public void mouseexited(java.awt.event.mouseevent e) { JButton b = (JButton)e.getSource(); b.setbackground(oldcolor); l utilisation de callback permet de partager facilement des traitements entre plusieurs événements. Dans ce cas, les deux méthodes prévues vont simplement appeler deux méthodes de la classe correspondant à l interface graphique. On pourra placer le code effectif dans les callbacks. public void mouseentered(java.awt.event.mouseevent e) { modifiercontexte(java.awt.event.mouseevent e)); public void mouseexited(java.awt.event.mouseevent e) { rétablircontexte(java.awt.event.mouseevent e)); Il faudra au moins définir ces deux nouvelles méthodes. On pourra ensuite leur affecter du code, soit en l introduisant dans la classe qui la définit (c est ce que NetBeans propose de faire dans la fenêtre en cours de définition) ou dans une classe qui en dérive, par redéfinition. Étape n 3 : ajout d un écouteur d événements à l objet concerné Il reste à informer l objet concerné qu il est écouté pour les événements prévus. Un simple appel de méthode réalise cette tâche : btnmessage.addmouselistener(new ReponseASouris()); Utilisation de classes anonymes Un peu de réflexion nous permet de constater que dans la plupart des cas, la classe listener n a qu une seule instance, directement passée en paramètre à addxxxlistener(). C est 5 La variable d instance oldcolor doit néanmoins exister dans la classe. On pourrait s en passer à condition de postuler que le bouton a la couleur par défaut.
17 5.4. CRÉER SES PROPRES ÉVÉNEMENTS 85 un cas d école pour utiliser une classe anonyme (ce que fait d ailleurs NetBeans). On notera que si plusieurs objets partagent les mêmes réactions face à un événement, il reste possible d utiliser des classes anonymes à condition que leurs méthodes fassent appel à des callbacks. Il n est pas sûr cependant que l optimisation soit au rendez-vous. Voici comment on gérerait nos fonds colorés avec une classe anonyme : btnmessage.addmouselistener(new MouseAdapter(){ public void mouseexited(java.awt.event.mouseevent e) { // code à prévoir public void mouseentered(java.awt.event.mouseevent e) { // code à prévoir ); 5.4 Créer ses propres événements Un programmeur peut parfois trouver avantage à ajouter ses évènements à un programme. On pourrait citer l exemple d un afficheur numérique qui permettrait d afficher des secondes, des minutes et des heures et générerait des événements lorsqu il dépasse sa capacité maximale par le haut ou par le bas. Nous prendrons un exemple plus simple : un label qui émet un événement chaque fois que son contenu devient un nombre multiple de 10. Java ne propose pas de mécanisme prédéfini pour gérer les événements, à part une classe EventObject de base. Le mécanisme d une gestion d événement est donc basé sur une convention, que le programmeur est invité à imiter. La conception d un nouveau type d événement consiste à faire dériver une nouvelle classe de EventObject : c est la classe DizaineEvent du schéma. Il suffira d écrire un constructeur qui pourra passer un paramètre objet au constructeur de la classe mère, afin que la méthode
18 86 CHAPITRE 5. SWING ET LA GESTION DES ÉVÉNEMENTS JA C Q U E S THOORENS - H T T P://W W W.T H O O R E N S.N E T getsource() puisse renvoyer une référence à l objet qui a créé l événement. Il faut ensuite définir une interface d écoute (DizaineListerner) en relation avec ce nouvel événement. Cette interface va définir autant de méthodes qu il y a de variantes à l événement. Dans notre cas, seule la méthode dizaineatteinte() est nécessaire. Dans le cas de l afficheur numérique, il aurait fallu distinguer des dépassements de deux types (underflow et overflow). On peut aussi définir une classe abstraite qui prévoit des méthodes non abstraites, mais ne faisant rien, si on ne veut pas forcer la redéfinition des méthodes qui seront sans objet dans un contexte donné. Dans ce cas, la classe, qui suit en fait le modèle adaptateur, implémentera l interface (voire même la remplacera). Ce n est pas la solution de notre exemple, où il n y a de toute façon qu une seule méthode. Il reste à implémenter le mécanisme des écouteurs au sein des classes qui vont gérer les événements. Cette implémentation se fait à l aide d une variable d instance privée servant à mémoriser les objets à l écoute de l événement et deux accesseurs spéciaux qui permettent d ajouter ou de retirer un listener 6. Le code peut prévoir l impossibilité d ajouter deux fois le même écouteur à la liste. La manière de mémoriser ces écouteurs est laissée à l appréciation du programmeur. J ai choisi un ArrayList, que le formalisme de Poseidon ne m a pas permis de rendre générique : en fait c est un ArrayList<DizaineListener>. Le schéma vu plus haut montre les relations entre les classes : généralisation entre l événement et la classe EventObject, et trois dépendances entre les deux classes et l interface, ces dépendances s expliquant par le type des paramètres. Voici le code complet des deux classes et de l interface. public class DizaineEvent extends EventObject { public DizaineEvent(Object source) { super(source); public interface DizaineListener { void dizaineatteinte(dizaineevent e); public class SuperLabel extends JLabel { private ArrayList<DizaineListener> ecouteurs = 6 Java définit un mécanisme plus complexe en gérant tous les écouteurs au niveau de la classe de base de son interface graphique (Component), cela lui permet de gérer tous les événements de manière centralisée. Le programmeur aura sans doute du mal à intégrer ses événements dans ce contexte, s il ne possède pas une vue bien claire du fonctionnement interne de Swing. L un des avantages de cette technique est de favoriser le passage des événements à un conteneur de plus haut niveau si c est nécessaire. On voit le soin mis dans la programmation des méthodes d ajout : public synchronized void addmouselistener(mouselistener l) { if (l == null) { return ; mouselistener = AWTEventMulticaster.add(mouseListener,l) ; neweventsonly = true ; // if this is a lightweight component, enable mouse events // in the native container. if (peer instanceof LightweightPeer) { parent.proxyenableevents(awtevent.mouse_event_mask) ;
19 5.4. CRÉER SES PROPRES ÉVÉNEMENTS 87 new ArrayList<DizaineListener>(); public SuperLabel() { super(); public void adddizainelistener(dizainelistener l){ if(! ecouteurs.contains(l)) ecouteurs.add(l); public void removedizainelistener(dizainelistener l){ ecouteurs.remove(l); JA C Q U E S THOORENS - H T T P://W W W.T H O O R E N S.N E T public void settext(string texte){ super.settext(texte); try{ int valeur = Integer.valueOf(getText()); if(valeur%10==0){ DizaineEvent e = new DizaineEvent(this); for(dizainelistener l:ecouteurs){ l.dizaineatteinte(e); catch(exception e) { Dans la définition de SuperLabel, la méthode settext() permet de voir comment l événement se produit : quand la nouvelle valeur est un multiple de 10, on crée un événement en passant l instance responsable de cette création au constructeur de l événement 7. La boucle qui suit va parcourir tous les objets qui écoutent l événement et active le code de leur méthode dizaineatteinte(). Le code ci-dessous montre l installation de deux listeners de l événement DizaineEvent. Le premier est une instance d une classe anonyme dont la méthode dizaineatteinte() se contentera d afficher un message sur la console. Il se met en place dans la méthode init- SuperLabel() qui gère l insertion de l étiquette sur la fenêtre private void initsuperlabel() { lblnombre2 = new SuperLabel(); lblnombre2.sethorizontalalignment(javax.swing.swingconstants.right); lblnombre2.settext("1"); add(lblnombre2, new org.netbeans.lib.awtextra.absoluteconstraints(50, 30, 110, 20)); lblnombre2.adddizainelistener(new DizaineListener(){ public void dizaineatteinte(dizaineevent e) { System.out.println("Nouvelle dizaine dans "+e.getsource()); 7 Il faudrait idéalement mémoriser la valeur antérieure de l objet SuperLabel, de manière à ce que l événement ne se produise pas au cas où on affecte une deuxième fois la même valeur, mais cela rendrait le code plus lourd dans un exemple.
20 88 CHAPITRE 5. SWING ET LA GESTION DES ÉVÉNEMENTS ); FIG. 5.3 Utilisation de DizaineEvent Le second listener est une instance de AdaptateurCompteur, un adaptateur qui va relayer l événement vers un compteur externe qu il est seul à connaître. Les détails de l implémentation sont laissés dans le code source complet, disponible sur Internet. La variable d instance adaptateur est initialisée par un accesseur. L inscription de l adaptateur parmi les écouteurs de l événement est placée dans cet accesseur 8. Comme le montre le schéma, les AdaptateurCompteurs implémentent évidemment l interface DizaineListener. public void setadaptateur(adaptateurcompteur adaptateur) { this.adaptateur = adaptateur; if(adaptateur!=null) lblnombre2.adddizainelistener(adaptateur); 8 Comme rien n empêche d utiliser plusieurs fois l accesseur, il faudrait idéalement penser à retirer de la liste des écouteurs l adaptateur installé lors du précédent appel.
Interfaces graphiques avec l API Swing
Interfaces graphiques avec l API Swing Les Swing Les classes graphiques Swing dérivent de la classe JComponent, qui hérite ellemême de la classe AWT (Abstract Window Toolkit). Tous les composants Swing
Java 7 Les fondamentaux du langage Java
184 Java 7 Les fondamentaux du langage Java 1.1 Les bibliothèques graphiques Le langage Java propose deux bibliothèques dédiées à la conception d'interfaces graphiques. La bibliothèque AWT et la bibliothèque
Exceptions. 1 Entrées/sorties. Objectif. Manipuler les exceptions ;
CNAM NFP121 TP 10 19/11/2013 (Séance 5) Objectif Manipuler les exceptions ; 1 Entrées/sorties Exercice 1 : Lire un entier à partir du clavier Ajouter une méthode readint(string message) dans la classe
Développement Logiciel
Développement Logiciel Éxamen session 1-2012-2013 (Vendedi 25 mai, 9h-11h) Seuls les documents liés directement au cours sont autorisés (comme dit sur le site) : sujets de TD, notes de cours, notes personnelles
Programmer en JAVA. par Tama ([email protected]( [email protected])
Programmer en JAVA par Tama ([email protected]( [email protected]) Plan 1. Présentation de Java 2. Les bases du langage 3. Concepts avancés 4. Documentation 5. Index des mots-clés 6. Les erreurs fréquentes
Création d un service web avec NetBeans 5.5 et SJAS 9
Sommaire Création d un service web avec NetBeans 5.5 et SJAS 9 1. Présentation... 2 2. Création d un service web avec NetBeans... 2 2.1. Création d une application Web... 2 2.2. Création du service web...
Auto-évaluation Programmation en Java
Auto-évaluation Programmation en Java Document: f0883test.fm 22/01/2013 ABIS Training & Consulting P.O. Box 220 B-3000 Leuven Belgium TRAINING & CONSULTING INTRODUCTION AUTO-ÉVALUATION PROGRAMMATION EN
JAVA 8. JAVA 8 - Les fondamentaux du langage. Les fondamentaux du langage Java. Avec exercices pratiques et corrigés JAVA 8 29,90.
Analyste et développeur pendant plus de 10 ans, Thierry GROUSSARD s est ensuite orienté vers la formation et plus particulièrement dans le domaine du développement. Sa connaissance approfondie des besoins
Programmation Orientée Objet
Programmation Orientée Objet Bertrand Estellon Département d Informatique de Luminy Aix-Marseille Université 29 mai 2012 Bertrand Estellon (DIL Aix-Marseille) Programmation Orientée Objet 29 mai 2012 1
Java Licence Professionnelle 2009-2010. Cours 7 : Classes et méthodes abstraites
Java Licence Professionnelle 2009-2010 Cours 7 : Classes et méthodes abstraites 1 Java Classes et méthodes abstraites - Le mécanisme des classes abstraites permet de définir des comportements (méthodes)
Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère
L'héritage et le polymorphisme en Java Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère En java, toutes les classes sont dérivée de la
Premiers Pas en Programmation Objet : les Classes et les Objets
Chapitre 2 Premiers Pas en Programmation Objet : les Classes et les Objets Dans la première partie de ce cours, nous avons appris à manipuler des objets de type simple : entiers, doubles, caractères, booléens.
TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile
TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile Dans ce TP, vous apprendrez à définir le type abstrait Pile, à le programmer en Java à l aide d une interface
Cours 1: Java et les objets
Ressources Les interface homme-machine et le langage Java DUT première année Henri Garreta, Faculté des Sciences (Luminy) Cyril Pain-Barre & Sébastien Nedjar, IUT d Aix-Marseille (Aix) Cours 1: infodoc.iut.univ-aix.fr/~ihm/
as Architecture des Systèmes d Information
Plan Plan Programmation - Introduction - Nicolas Malandain March 14, 2005 Introduction à Java 1 Introduction Présentation Caractéristiques Le langage Java 2 Types et Variables Types simples Types complexes
TP3. Mail. Attention aux fausses manoeuvres lors de ce TP vous pouvez endommager votre mail sur ouindose.
Université Paris 7 M2 II Protocole Internet TP3 Mail Attention aux fausses manoeuvres lors de ce TP vous pouvez endommager votre mail sur ouindose. 1 Protocole SMTP 1. Le protocole SMTP est définit dans
Date M.P Libellé Catégorie S.Catégorie Crédit Débit Solde S.B
Excel : Réalisation d un classeur Compta Saisir les étiquettes Renommer la première feuille Compta Laisser la première ligne vide et sur la deuxième ligne saisir les étiquettes Se placer sur A2 et saisir
INTRODUCTION A JAVA. Fichier en langage machine Exécutable
INTRODUCTION A JAVA JAVA est un langage orienté-objet pur. Il ressemble beaucoup à C++ au niveau de la syntaxe. En revanche, ces deux langages sont très différents dans leur structure (organisation du
Bases Java - Eclipse / Netbeans
Institut Galilée PDJ Année 2014-2015 Master 1 Environnements Java T.P. 1 Bases Java - Eclipse / Netbeans Il existe plusieurs environnements Java. Il est ESSENTIEL d utiliser la bonne version, et un environnement
Construire des plug-ins pour SAS Management Console SAS 9.1
Construire des plug-ins pour SAS Management Console SAS 9.1 Janvier 2005 Sommaire 1 INTRODUCTION... 3 1.1 OBJECTIFS... 3 1.2 PERIMETRE... 3 2 LES COMPOSANTS DE SAS MANAGEMENT CONSOLE... 4 3 LA CONSTRUCTION
Java Licence Professionnelle CISII, 2009-10
Java Licence Professionnelle CISII, 2009-10 Cours 4 : Programmation structurée (c) http://www.loria.fr/~tabbone/cours.html 1 Principe - Les méthodes sont structurées en blocs par les structures de la programmation
COURS WINDEV NUMERO 3
COURS WINDEV NUMERO 3 01/02/2015 Travailler avec un fichier de données Etude du gestionnaire d analyse, Manipulation des tables mémoires, Manipulation de données, Création d états, Pré requis : Cours WinDev
TP1 : Initiation à Java et Eclipse
TP1 : Initiation à Java et Eclipse 1 TP1 : Initiation à Java et Eclipse Systèmes d Exploitation Avancés I. Objectifs du TP Ce TP est une introduction au langage Java. Il vous permettra de comprendre les
EXCEL TUTORIEL 2012/2013
EXCEL TUTORIEL 2012/2013 Excel est un tableur, c est-à-dire un logiciel de gestion de tableaux. Il permet de réaliser des calculs avec des valeurs numériques, mais aussi avec des dates et des textes. Ainsi
GUIDE Excel (version débutante) Version 2013
Table des matières GUIDE Excel (version débutante) Version 2013 1. Créer un nouveau document Excel... 3 2. Modifier un document Excel... 3 3. La fenêtre Excel... 4 4. Les rubans... 4 5. Saisir du texte
Un ordonnanceur stupide
Un ordonnanceur simple Université Paris Sud L objet des exercices qui suivent est de créer un ordonanceur implantant l algorithme du tourniquet ( round-robin scheduler ). La technique utilisée pour élire
Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars 2014. http://homepages.laas.fr/matthieu/cours/java/java.pdf
Introduction à Java Matthieu Herrb CNRS-LAAS http://homepages.laas.fr/matthieu/cours/java/java.pdf Mars 2014 Plan 1 Concepts 2 Éléments du langage 3 Classes et objets 4 Packages 2/28 Histoire et motivations
LMI 2. Programmation Orientée Objet POO - Cours 9. Said Jabbour. [email protected] www.cril.univ-artois.fr/~jabbour
LMI 2 Programmation Orientée Objet POO - Cours 9 Said Jabbour [email protected] www.cril.univ-artois.fr/~jabbour CRIL UMR CNRS 8188 Faculté des Sciences - Univ. Artois Février 2011 Les collections
< Atelier 1 /> Démarrer une application web
MES ANNOTATIONS SONT EN ROUGE : Axel < Atelier 1 /> Démarrer une application web Microsoft France Tutorial Découverte de ASP.NET 2.0 Sommaire 1 INTRODUCTION... 3 1.1 CONTEXTE FONCTIONNEL... 3 1.2 CONTEXTE
Threads. Threads. USTL http://www.lifl.fr/ routier 1
Threads USTL http://www.lifl.fr/ routier 1 Rappels - Définitions un Process est un programme qui tourne et dispose de ses propres ressources mémoire. OS multi-tâche plusieurs process en concurrence un
Langage et Concepts de Programmation Objet. 1 Attributs et Méthodes d instance ou de classe. Travaux Dirigés no2
Langage et Concepts de Programmation Objet Travaux Dirigés no2 Pôle Informatique École Nationale Supérieure des Mines de St-Etienne Vous trouverez plus de détails sur les concepts abordés lors de ce TD
Sommaire Introduction... 3 Le but du projet... 3 Les moyens utilisés... 3 Informations sur le client FTP... 4 Pourquoi une version Linux et
Licence 3 CDA 2010/2011 Client FTP Java Maxence Jaouan Sommaire Introduction... 3 Le but du projet... 3 Les moyens utilisés... 3 Informations sur le client FTP... 4 Pourquoi une version Linux et Windows?...
Tutoriel. Votre site web en 30 minutes
Tutoriel Votre site web en 30 minutes But du tutoriel Nous allons vous présenter comment réaliser rapidement votre site avec Web Creator Pro 6 en vous basant sur l utilisation des modèles fournis avec
Avant-propos FICHES PRATIQUES EXERCICES DE PRISE EN MAIN CAS PRATIQUES
Avant-propos Conçu par des pédagogues expérimentés, son originalité est d être à la fois un manuel de formation et un manuel de référence complet présentant les bonnes pratiques d utilisation. FICHES PRATIQUES
Chapitre 10. Les interfaces Comparable et Comparator 1
Chapitre 10: Les interfaces Comparable et Comparator 1/5 Chapitre 10 Les interfaces Comparable et Comparator 1 1 Ce chapitre a été extrait du document "Objets, Algorithmes, Patterns" de [René Lalement],
Groupe Eyrolles, 2003, ISBN : 2-212-11317-X
Groupe Eyrolles, 2003, ISBN : 2-212-11317-X 3 Création de pages dynamiques courantes Dans le chapitre précédent, nous avons installé et configuré tous les éléments indispensables à la mise en œuvre d une
Quelques patterns pour la persistance des objets avec DAO DAO. Principe de base. Utilité des DTOs. Le modèle de conception DTO (Data Transfer Object)
Quelques patterns pour la persistance des objets avec DAO Ce cours présente des modèles de conception utilisés pour effectuer la persistance des objets Université de Nice Sophia-Antipolis Version 1.4 30/8/07
Débuter avec Excel. Excel 2007-2010
Débuter avec Excel Excel 2007-2010 Fabienne ROUX Conseils & Formation 10/04/2010 TABLE DES MATIÈRES LE RUBAN 4 LE CLASSEUR 4 RENOMMER LES FEUILLES DU CLASSEUR 4 SUPPRIMER DES FEUILLES D UN CLASSEUR 4 AJOUTER
Manuel d utilisation 26 juin 2011. 1 Tâche à effectuer : écrire un algorithme 2
éducalgo Manuel d utilisation 26 juin 2011 Table des matières 1 Tâche à effectuer : écrire un algorithme 2 2 Comment écrire un algorithme? 3 2.1 Avec quoi écrit-on? Avec les boutons d écriture........
«Manuel Pratique» Gestion budgétaire
11/06/01 B50/v2.31/F/MP005.01 «Manuel Pratique» Gestion budgétaire Finance A l usage des utilisateurs de Sage BOB 50 Solution Sage BOB 50 2 L éditeur veille à la fiabilité des informations publiées, lesquelles
Formation. Module WEB 4.1. Support de cours
Formation Module WEB 4.1 Support de cours Rédacteur Date de rédaction F.CHEA 08/02/2012 Les informations contenues dans ce document pourront faire l'objet de modifications sans préavis Sauf mention contraire,
Cours 2 : programmation des interfaces graphiques
Cours 2 : programmation des interfaces graphiques [email protected] (partie de la présentation basée sur des transparents de Michel Beaudouin-Lafon) système interactif vs. système algorithmique
TD3: tableaux avancées, première classe et chaînes
TD3: tableaux avancées, première classe et chaînes de caractères 1 Lestableaux 1.1 Élémentsthéoriques Déclaration des tableaux Pour la déclaration des tableaux, deux notations sont possibles. La première
Logiciel de gestion de caisse et d ardoises
6, bd maréchal Juin F-14050 Caen cedex 4 Spécialité Informatique 2 e année Rapport de projet Logiciel de gestion de caisse et d ardoises BOIRLEAUD Pierre-Jean MOLINS Nicolas REHFELD Vincent Table des matières
Afin d accéder à votre messagerie personnelle, vous devez vous identifier par votre adresse mail et votre mot de passe :
1 CONNEXION A LA MESSAGERIE ZIMBRA PAR LE WEBMAIL Ecran de connexion à la messagerie Rendez vous dans un premier temps sur la page correspondant à votre espace webmail : http://webmailn.%votrenomdedomaine%
TP, première séquence d exercices.
TP, première séquence d exercices. Benoît Valiron [email protected] 7 novembre 2010 Introduction Vous écrirez les réponses aux questions courtes sur une feuille à rendre à la fin de la
Programmation en Java Interface graphique. NGUYEN Thi Minh Tuyen
Programmation en Java Interface graphique Toolkits graphiques Java AWT Obsolète Swing Supporté par Sun/Oracle Repose sur AWT mais Swing AWT, JBu@onBu@on SWT libre, iniaé par IBM/Eclipse 2 Swing Your
Java Licence Professionnelle CISII, 2009-2010. Cours 2 : Classes et Objets
Licence Professionnelle CISII, 2009-2010 Cours 2 : Classes et Objets 1 Classes et Objets Objectifs des LOO : - Manipuler des objets - Découper les programmes suivant les types des objets manipulés - Regrouper
Utilisation d objets : String et ArrayList
Chapitre 6 Utilisation d objets : String et ArrayList Dans ce chapitre, nous allons aborder l utilisation d objets de deux classes prédéfinies de Java d usage très courant. La première, nous l utilisons
Eclipse atelier Java
Eclipse atelier Java Table des matières 1. Introduction...2 2. Télécharger eclipse...3 3. Installer eclipse...3 4. Premier lancement d eclipse...3 5. Configurer eclipse pour faire du Java...5 6. Développer
Le logiciel de création de site internet IZISPOT est un outil très puissant et qui est assez simple après quelques temps d utilisation.
1 Le logiciel de création de site internet IZISPOT est un outil très puissant et qui est assez simple après quelques temps d utilisation. Voici un mode opératoire qui vous guidera dans l utilisation de
Premiers Pas avec OneNote 2013
Premiers Pas avec OneNote 2 Présentation de OneNote 3 Ouverture du logiciel OneNote 4 Sous Windows 8 4 Sous Windows 7 4 Création de l espace de travail OneNote 5 Introduction 5 Présentation des différentes
Synchro et Threads Java TM
Synchro et Threads Java TM NICOD JEAN-MARC Master 2 Informatique Université de Franche-Comté UFR des Sciences et Techniques septembre 2008 NICOD JEAN-MARC Synchro et Threads avec Java TM 1 / 32 Sommaire
Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java
Info0101 Intro. à l'algorithmique et à la programmation Cours 3 Le langage Java Pierre Delisle, Cyril Rabat et Christophe Jaillet Université de Reims Champagne-Ardenne Département de Mathématiques et Informatique
Programmation par composants (1/3) Programmation par composants (2/3)
Programmation par composants (1/3) La programmation par composant vise le développement de logiciel par aggrégation de briques logicielles existantes est indépendante de la POO La programmation par composant
Programme «Analyste Programmeur» Diplôme d état : «Développeur Informatique» Homologué au niveau III (Bac+2) (JO N 176 du 1 août 2003) (34 semaines)
Programme «Analyste Programmeur» Diplôme d état : «Développeur Informatique» Homologué au niveau III (Bac+2) (JO N 176 du 1 août 2003) (34 semaines) Module 1 : Programmer une application informatique Durée
AUVRAY Clément (168187) HOMBERGER Alexandre (186897) GLADE. Langages, outils et méthodes pour la programmation avancée Page 1 sur 12
GTK+ GLADE Page 1 sur 12 SOMMAIRE INTRO 3 Présentation de GTK+ 3 Présentation de GLADE 3 GTK+ 4 Installation 4 Les Widgets 4 Le système de hiérarchie 5 Les signaux 6 GLADE 7 Installation 7 L interface
Desktop Intégration. Rémi Forax
Desktop Intégration Rémi Forax 1 Intégration au bureau L intégration de l application au bureau de l utilisateur se fait en combinant plusieurs techniques L écran d annonce de l application (SplashScreen)
Encapsulation. L'encapsulation consiste à rendre les membres d'un objet plus ou moins visibles pour les autres objets.
Encapsulation L'encapsulation consiste à rendre les membres d'un objet plus ou moins visibles pour les autres objets. La visibilité dépend des membres : certains membres peuvent être visibles et d'autres
Cours intensif Java. 1er cours: de C à Java. Enrica DUCHI LIAFA, Paris 7. Septembre 2009. [email protected]
. Cours intensif Java 1er cours: de C à Java Septembre 2009 Enrica DUCHI LIAFA, Paris 7 [email protected] LANGAGES DE PROGRAMMATION Pour exécuter un algorithme sur un ordinateur il faut le
EXCEL PERFECTIONNEMENT SERVICE INFORMATIQUE. Version 1.0 30/11/05
EXCEL PERFECTIONNEMENT Version 1.0 30/11/05 SERVICE INFORMATIQUE TABLE DES MATIERES 1RAPPELS...3 1.1RACCOURCIS CLAVIER & SOURIS... 3 1.2NAVIGUER DANS UNE FEUILLE ET UN CLASSEUR... 3 1.3PERSONNALISER LA
Excel 2007 Niveau 3 Page 1 www.admexcel.com
Excel 2007 Niveau 3 Page 1 TABLE DES MATIERES UTILISATION DE LISTES DE DONNEES... 4 REMARQUES PREALABLES SUR LES LISTES DE DONNEES... 4 METTRE EN FORME LE TABLEAU... 6 METTRE LA LISTE A JOUR... 7 a/ Directement
Gestion distribuée (par sockets) de banque en Java
Gestion distribuée (par sockets) de banque en Java Université Paris Sud Rappel sur la solution locale de gestion simple de banque L objet de cet exercice était de créer une application java qui implante
Tp 1 correction. Structures de données (IF2)
Tp 1 correction Structures de données (IF2) Remarque générale : compilez et exécutez le code au-fur-et-à mesure de son écriture. Il est plus facile de corriger une petite portion de code délimitée que
TD/TP PAC - Programmation n 3
Université Paris Sud Licence d informatique/iup-miage2 Année 2004-2005 Auteur : Frédéric Vernier Semaine : 11-16 octobre 2004 Conditions : sur machine avec les outils standards java web: http://vernier.frederic.free.fr/indexpac.html
RAPPELS SUR LES METHODES HERITEES DE LA CLASSE RACINE Object ET LEUR SPECIALISATION (i.e. REDEFINITION)
CLASSE RACINE Object ancêtre de toutes les classes RAPPELS SUR LES METHODES HERITEES DE LA CLASSE RACINE Object ET LEUR SPECIALISATION (i.e. REDEFINITION) définit donc des méthodes héritées par toutes
La Clé informatique. Formation Excel XP Aide-mémoire
La Clé informatique Formation Excel XP Aide-mémoire Septembre 2005 Table des matières Qu est-ce que le logiciel Microsoft Excel?... 3 Classeur... 4 Cellule... 5 Barre d outil dans Excel...6 Fonctions habituelles
PRISE EN MAIN D UN TABLEUR. Version OPEN OFFICE
PRISE EN MAIN D UN TABLEUR Version OPEN OFFICE Prise en main d un tableur page 2 1. L utilisation de la souris Pour faire fonctionner un tableur, on utilise le clavier mais aussi la souris. Rappelons,
Anne Tasso. Java. Le livre de. premier langage. 10 e édition. Avec 109 exercices corrigés. Groupe Eyrolles, 2000-2015, ISBN : 978-2-212-14154-2
Anne Tasso Java Le livre de premier langage 10 e édition Avec 109 exercices corrigés Groupe Eyrolles, 2000-2015, ISBN : 978-2-212-14154-2 Table des matières Avant-propos Organisation de l ouvrage..............................
Introduction à Eclipse
Introduction à Eclipse Eclipse IDE est un environnement de développement intégré libre (le terme Eclipse désigne également le projet correspondant, lancé par IBM) extensible, universel et polyvalent, permettant
SOMMAIRE. 1. Connexion à la messagerie Zimbra 4 1.1.Pré-requis 4 1.2.Ecran de connexion à la messagerie 4
Messagerie Zimbra version 7 Prise en main Nadège HARDY-VIDAL 2 septembre 20 SOMMAIRE. Connexion à la messagerie Zimbra 4..Pré-requis 4.2.Ecran de connexion à la messagerie 4 2. Présentation générale de
CREG : http://www.creg.ac- versailles.fr/spip.php?article803
OUTILS NUMERIQUES Édu-Sondage : concevoir une enquête en ligne Rédacteur : Olivier Mondet Bla. 1 Présentation Parmi les pépites que contient l Édu-Portail, l application Édu-Sondage est l une des plus
Plan du cours. Historique du langage http://www.oracle.com/technetwork/java/index.html. Nouveautés de Java 7
Université Lumière Lyon 2 Faculté de Sciences Economiques et Gestion KHARKIV National University of Economic Introduction au Langage Java Master Informatique 1 ère année Julien Velcin http://mediamining.univ-lyon2.fr/velcin
Le langage JAVA G. Baulieu Institut de Physique Nucléaire de Lyon Septembre 2009
Le langage JAVA G. Baulieu Institut de Physique Nucléaire de Lyon Septembre 2009 Quelques acronymes JDK : Java Development Kit SDK : Software Development Kit J2SE : Java 2 Standard Edition JRE : Java Runtime
Licence Bio Informatique Année 2004-2005. Premiers pas. Exercice 1 Hello World parce qu il faut bien commencer par quelque chose...
Université Paris 7 Programmation Objet Licence Bio Informatique Année 2004-2005 TD n 1 - Correction Premiers pas Exercice 1 Hello World parce qu il faut bien commencer par quelque chose... 1. Enregistrez
Système de Gestion Informatisée des. Exploitations Agricoles Irriguées avec Contrôle de l Eau
MINISTERE DE L AGRICULTURE DE L ELEVAGE ET DE LA PECHE DIRECTION DU GENIE RURAL PROJET DE RENFORCEMENT DES CAPACITES NATIONALES DE SUIVI DES RESSOURCES EN EAU AXE SUR LA GESTION DE L EAU AGRICOLE Système
NFP 121. Java et les Threads. Présentation : Thierry Escalarasse Mai 2007
NFP 121 Java et les Threads Présentation : Thierry Escalarasse Mai 2007 Plan du cour Présentation de la notion de Threads La classe Thread L interface Runnable Les états d un thread La Synchronisation
Chapitre VI- La validation de la composition.
Chapitre VI- La validation de la composition. Objectifs du chapitre : Expliquer les conséquences de l utilisation de règles de typage souples dans SEP. Présenter le mécanisme de validation des connexions
TD/TP PAC - Programmation n 3
Université Paris Sud Licence d informatique/iup-miage2 - Année 2004-2005 auteur : Frédéric Vernier semaine : 11-16 octobre 2004 conditions : sur machine avec les outils standards java web: http://vernier.frederic.free.fr/indexpac.html
Programmation Objet Java Correction
INSA - 4 AE 2007 2008 Durée : 1H00 Contrôle Programmation Objet Java Correction Consignes Tous les documents sont autorisés, mais ils seront peu utiles. Indiquez vos nom et prénom sur chaque feuille. Le
Traduction des Langages : Le Compilateur Micro Java
BARABZAN Jean-René OUAHAB Karim TUCITO David 2A IMA Traduction des Langages : Le Compilateur Micro Java µ Page 1 Introduction Le but de ce projet est d écrire en JAVA un compilateur Micro-Java générant
ContactForm et ContactFormLight - Gestionnaires de formulaire pour Prestashop Edité par ARETMIC S.A.
ContactForm et ContactFormLight - Gestionnaires de formulaire pour Prestashop Edité par ARETMIC S.A. - 1 - PREAMBULE Les conditions générales d utilisation détaillant l ensemble des dispositions applicables
Optimiser pour les appareils mobiles
chapitre 6 Optimiser pour les appareils mobiles 6.1 Créer un site adapté aux terminaux mobiles avec jquery Mobile... 217 6.2 Transformer son site mobile en application native grâce à PhoneGap:Build...
Projet de programmation (IK3) : TP n 1 Correction
Projet de programmation (IK3) : TP n 1 Correction Semaine du 20 septembre 2010 1 Entrées/sorties, types de bases et structures de contrôle Tests et types de bases Tests et types de bases (entiers) public
Créer et partager des fichiers
Créer et partager des fichiers Le rôle Services de fichiers... 246 Les autorisations de fichiers NTFS... 255 Recherche de comptes d utilisateurs et d ordinateurs dans Active Directory... 262 Délégation
Apprendre la Programmation Orientée Objet avec le langage Java (avec exercices pratiques et corrigés)
Introduction à la POO 1. Histoire de la POO 9 2. Historique du 12 La conception orientée objet 1. Approche procédurale et décomposition fonctionnelle 13 2. La transition vers l'approche objet 14 3. Les
Parcours FOAD Formation EXCEL 2010
Parcours FOAD Formation EXCEL 2010 PLATE-FORME E-LEARNING DELTA ANNEE SCOLAIRE 2013/2014 Pôle national de compétences FOAD Formation Ouverte et A Distance https://foad.orion.education.fr Livret de formation
Corrigés des premiers exercices sur les classes
Corrigés des premiers exercices sur les classes Exercice 2.1.1 utilisation d une classe Voici le texte d une classe représentant de façon sommaire un compte bancaire et les opérations bancaires courantes.
Applet pour visualiser les variables «automate» notifiées
Applet pour visualiser les variables «automate» notifiées Sommaire 1. Introduction...2 2. Lecture de variables «automate» notifiées...2 2.1. IHM servant au test :...2 2.2. Codage de l'applet :...2 3. Codage
Outils, langage et approche Android Une introduction. Nicolas Stouls nicolas.stouls@insa lyon.fr
Outils, langage et approche Android Une introduction Nicolas Stouls nicolas.stouls@insa lyon.fr Webographie La bible contenant «tout» : http://developer.android.com/index.html Les supports cette intervention
Langage Java. Classe de première SI
Langage Java Table des matières 1. Premiers pas...2 1.1. Introduction...2 1.2. Mon premier programme...2 1.3. Les commentaires...2 2. Les variables et les opérateurs...2 3. La classe Scanner...3 4. Les
Utilisation de l éditeur.
Utilisation de l éditeur. Préambule...2 Configuration du navigateur...3 Débloquez les pop-up...5 Mise en évidence du texte...6 Mise en évidence du texte...6 Mise en page du texte...7 Utilisation de tableaux....7
Programmation par les Objets en Java
Programmation par les Objets en Java Najib TOUNSI Les classes en Java (TD 3) I. Notion de classe I.1 Classe, champs, méthodes, instanciation, this, private vs. public. Créer une classe Point (coordonnée
Corrigé des exercices sur les références
Corrigé des exercices sur les références Exercice 3.1.1 dessin Pour cet exercice, vous allez dessiner des structures de données au moyen de petits schémas analogues à ceux du cours, comportant la pile
les Formulaires / Sous-Formulaires Présentation...2 1. Créer un formulaire à partir d une table...3
Présentation...2 1. Créer un formulaire à partir d une table...3 2. Les contrôles :...10 2.1 Le contrôle "Intitulé"...11 2.2 Le contrôle "Zone de Texte"...12 2.3 Le contrôle «Groupe d options»...14 2.4
Remote Method Invocation (RMI)
Remote Method Invocation (RMI) TP Réseau Université Paul Sabatier Master Informatique 1 ère Année Année 2006/2007 Plan Objectifs et Inconvénients de RMI Fonctionnement Définitions Architecture et principe
INITIATION AU LANGAGE JAVA
INITIATION AU LANGAGE JAVA I. Présentation 1.1 Historique : Au début des années 90, Sun travaillait sur un projet visant à concevoir des logiciels simples et performants exécutés dans des PDA (Personnal
P r ob lé m a t iq u e d e la g é n é r icit é. Pr in cip e d e la g é n é r icit é e n Ja v a ( 1 /3 )
P r ob lé m a t iq u e d e la g é n é r icit é les versions de Java antérieures à 1.5 permettaient de créer des classes de structures contenant n'importe quels types d'objet : les collections (classes
Initiation à JAVA et à la programmation objet. [email protected]
Initiation à JAVA et à la programmation objet [email protected] O b j e c t i f s Découvrir un langage de programmation objet. Découvrir l'environnement java Découvrir les concepts de la programmation
