of 43 /43
Les composants Graphiques Atomiques Les Labels (JLabel) Zone de texte (JTextFiled) Les boutons de commande (Jbutton, JCheckBox, ) Les listes Les menus

Les composants Graphiques Atomiques

  • Author
    alain

  • View
    15

  • Download
    0

Embed Size (px)

DESCRIPTION

Les composants Graphiques Atomiques. Les Labels (JLabel) Zone de texte (JTextFiled) Les boutons de commande (Jbutton, JCheckBox, ) Les listes Les menus. Les Labels (JLabel). Servent essentiellement à afficher du texte et des images (texte d’information) La classe utilisée est JLabel - PowerPoint PPT Presentation

Text of Les composants Graphiques Atomiques

  • Les composants Graphiques AtomiquesLes Labels (JLabel)Zone de texte (JTextFiled)Les boutons de commande (Jbutton, JCheckBox, )Les listesLes menus

  • Les Labels (JLabel)Servent essentiellement afficher du texte et des images (texte dinformation)La classe utilise est JLabel Constructeurs: new JLabel("Text") new JLabel(ImageIcon)new JLabel("Text", ImageIcon, AligHorizotal) setForGround(Color)setFont(Font)New Font(font, style, taille)

  • Exemple JLabel// cration de la fentre rcupration de son container et mise ajours de //son gestionnaire demplacement JFrame JPF=new JFrame("fentre sur les Jlabel");Container JCP=JPF.getContentPane();JCP.setLayout(new GridLayout(3,0,10,10));//cration des images insrerImageIcon image1=new ImageIcon("c:\\email.gif");ImageIcon image2=new ImageIcon("c:\\email.gif");//cration des JLabel selon les trois modlesJLabel text=new JLabel("courier gras et de taille 15");JLabel icon=new JLabel(image1,JLabel.LEFT);JLabel texteETicon=new JLabel("je suis le texte ",image2,JLabel.LEFT);//changement des caractristiques de la police du label1text.setForeground(Color.BLUE);text.setFont(new Font("courier",Font.BOLD,15));//ajout des label au container de la fentre & affichageJCP.add(text);JCP.add(icon);JCP.add(texteETicon);JPF.pack();JPF.show();

  • Les zones de texte (1)Utiliss gnralement pour saisir des informations destines au programmeLes zones texte en swing sont assures par la hirarchie suivante:

  • Zone texte (2): JTextField & JPasswordTextDestins pour saisir du texte sur une seule ligneConstructeurs:new JTextField(String)new JTextField(String,int)new JPasswordText(String)new JPasswordText(String,int)getText(): rcupre le contenue actuel du JTextFieldsetFont(Font);setForGround(Color)Pour JPasswordText utilisez la mthode char[] getPassword() et non getText().

  • JTextAreaUtilis pour afficher ou saisir du texte sur plusieurs ligne.Constructeurs:new JTextArea(String)new JTextArea(int ligne, int colonne)setFont(Font)setForground(Color)Par dfaut le texte est changeablesetEditable(false);

  • Exemple: zone Texte JLabel label1= new JLabel("JTextField:");JTextField text=new JTextField("texte par dfaut");JLabel label2= new JLabel("JPasswordField:");JPasswordField psText=new JPasswordField();JPanel panel1=new JPanel(new GridLayout(2,2));panel1.setBorder(BorderFactory.createTitledBorder(BorderFactory.createLineBorder(Color.BLACK,3),"les zones Texte"));panel1.add(label1);panel1.add(text);panel1.add(label2);panel1.add(psText);JTextArea textArea = new JTextArea( "ceci est une JTextArea. " +); textArea.setEditable(false); textArea.setFont(new Font("Serif", Font.ITALIC, 16)); textArea.setLineWrap(true); textArea.setWrapStyleWord(true);JPanel panel2=new JPanel(new GridLayout(1,1)); panel2.setBorder(BorderFactory.createTitledBorder( BorderFactory.createLineBorder(Color.BLACK,3),"JTextArea")); panel2.add(textArea); JCP.add(panel1);JCP.add(panel2); JPF.pack(); JPF.show();

  • Les boutons: les JButton utiliss pour enregistrer ou ragir au commande de lutilisateur. Constructeur:new JButton();New Jbutton(String);New Jbutton(Icon);New Jbutton(String ,Icon);Peut tre activ ou dsactivLe JButton ragit graphiquement au clicQuand il est dsactiv, laction clic na aucun effetQuelques mthodes:SetEnable(boolean) // change ltat dactivit du boutonSet

  • Exemple: Jbuttonpublic static void main(String [] args) {// cration de la fentre JFrame.setDefaultLookAndFeelDecorated(true); JFrame testButton=new JFrame ("exemple sur les Jbutton"); Container c=testButton.getContentPane(); c.setLayout(new FlowLayout()); //Cration des trois boutons JButton text=new JButton("je suis un boutton slctionne"); text.setDefaultCapable(true); JButton textETicon=new JButton( "texte + image",new ImageIcon("c:/orange.gif")); JButton textD=new JButton("je suis un boutton dsactiv");// dsactiver le bouton textD.setEnabled(false);// ajouter les boutons c.add(text);c.add(textETicon);c.add(textD); testButton.initialisation(); testButton.pack();testButton.show(); }}

  • Les Boutons: JCheckBoxUtiliss pour le choix des options ou des rponsesLes constructeurs:new JCheckBox(String,[boolean]);new JCheckBox(Icon,[boolean]);Les deux. quelques mthodes:setSelected(boolean) //slectionner loptionBoolean isSelected() // teste ltat du bouton

  • Exemple: JCheckBoxpublic static void main(String [] args) {// cration de la fentre JFrame.setDefaultLookAndFeelDecorated(true); JFrame testCheck=new JFrame ("exemple sur les JCheckBox"); Container c=testCheck.getContentPane(); c.setLayout(new FlowLayout()); //Cration des Jcheckbox dans un panel JPanel listchoix=new JPanel(new GridLayout(0,1,10,10)); JCheckBox lun=new JCheckBox("Lunettes"); JCheckBox cas=new JCheckBox("Casquette"); JCheckBox chau=new JCheckBox("Chaussures"); listchoix.add(lun);listchoix.add(cas);listchoix.add(chau); // cration de l'image JLabel labelimage=new JLabel(new ImageIcon("c:\\checkbox.gif")); // ajout des checkbox et l'image dans la fentre c.add(listchoix);c.add(labelimage);// affichage testCheck.pack();testCheck.show(); }

  • Bouton: JRadioButtonContrairement au Jcheckbox, utilis pour le choix exclusive (homme-femme etc.)Ncessit de placer les choix dans un objet contexte: ButtonGroupConstructeur:Les mmes que JCheckboxLes oprations:Les mmes que pour JCheckBoxButtonGroup:Constructeur: un seul, pas de paramtreAjouter des JRadioButton: add(AbstractButton)

  • Exemple: JRadioButtonpublic static void main(String [] args) {// cration de la fentre JFrame.setDefaultLookAndFeelDecorated(true); JFrame testCheck=new JFrame (exemple sur les JRadioButton & ButtonGroup"); Container c=testCheck.getContentPane(); c.setLayout(new FlowLayout()); //Cration des boutton de choix JPanel listchoix=new JPanel(new GridLayout(0,1,10,10)); JRadioButton rose=new JRadioButton("petit couchon Rose"); JRadioButton bleu=new JRadioButton("petit couchon Bleu"); JRadioButton noir=new JRadioButton("petit couchon Noire"); listchoix.add(rose);listchoix.add(bleu);listchoix.add(noir); //regrouper les bouttons dans une mme contexte ButtonGroup gb=new ButtonGroup(); gb.add(rose);gb.add(bleu);gb.add(noir); // cration de l'image JLabel labelimage=new JLabel(new ImageIcon("c:\\pig.gif")); // ajout des checkbox et l'image dans la fentre c.add(listchoix);c.add(labelimage); // affichage testCheck.pack();testCheck.show(); }

  • Les listes: JListUtiliss pour prsenter lutilisateur un ensemble dlments (peuvent tre utilises pour le choix multiple)Les lments peuvent tre affichs sur plusieurs lignes et colonnes Constructeur:New JList(Object[]) //liste immuable new JList(Vector) //liste immuablenew JList(DefaultListModel) //liste changeable Par dfaut la liste est multi-modale (on peut slectionner plusieurs lments) et verticale.

  • JListe (2)Changer lorientation de la liste:setLayoutOrientation(int);Trois constantes

    Changer le mode de slectionsetSelectionMode(int)Trois constantes

    HORIZONTAL_WRAP VERTICAL_WRAP VERTICAL

  • JList (3)Quelques mthodessetModel(ListModel); //changer la liste modleObject getSelectedValue();Object[] getSelectedValues();DefaultListModel // constructeur videaddElement(Object); //ajouter un lment dans la listeint getCapacity(); // retourne nombre dlments.Les ascenseurs: Ajouter des ascenseur pour permettre de grer la taille de la liste.Class : JScrollPaneConstructeur : JScrollPane(Component);Il peut tre ajout une zone JTextAreaAjouter lobjet ascenseur la place de la liste

  • Exemple: JList//dclaration de lobjet fentre et rcupration de son container..//cration d'un objet DefaultListModelDefaultListModel lm=new DefaultListModel();//cration d'un objet Jliste avec comme modle liste "lm" JList list=new JList(lm);// ajout des employs dans le modle de la liste "lm"lm.addElement(new Employ("Alan", "Sommerer","Directeur"));lm.addElement(new Employ("Alison","Huml", "marketing"));lm.addElement(new Employ("Kathy","Walrath", "comercial"));lm.addElement(new Employ("Lisa","Friendly", "marketing"));..JLabel text=new JLabel("Quel sont vos enploys prfr ?????"); //cration de l'assenseur et on fixe sa tailleJScrollPane listScroller = new JScrollPane(list);listScroller.setPreferredSize(new Dimension(250, 80));text.setForeground(Color.red);//ajout des deux composants au container de la fentre affichageJCP.add(text);JCP.add(listScroller); JPF.pack();JPF.show();

  • List: comboBoxUne liste ou un lment est slectionn la fois

  • exemple

  • Les menusUne manire dorganiser les boutons de commande et les boutons doptions qui ont un intrt pour lapplication.exemple en image:

  • Vue global de lAPI menu

  • JMenuBarChaque fentre peut comporter un et un seul JMenuBarUtilisation de la mthode de JFrame: setJMenuBar(JMenuBar)Constructeur : new JMenuBar();Mthode dajout de menusAdd(JMenue)

  • JMenuConstructeurs:JMenu(String);JMenu(String,boolean)Ajouter des des lments:Add(JMenuItem)fichier.addSeparator();// ajoute une ligne de sparationVous pouvez galement ajouter des objets de type JMenu pour les sous-menus

  • JMenuItemRessemble JButton (texte et icon)Constructeur: JMenuItem(String, [Icon])Les sous classes possiblesJRadioButtonMenuItem (regrouper dans des ButtonGroup) JCheckBox.Le mme fonctionnement.

  • Exemple: testons le toutLes menusLes lment de tous types et les sous menu.//cration de la fentre//cration dun object JMenuBarJMenuBar menuBar = new JMenuBar();//remplacement de JMenuBar de la fentre par lobjet cre fentre.setJMenuBar(menuBar);//cration du Menu_1 . JMenu jmenu1= new JMenu("JMenu_1"); JMenu jmenu2=new JMenu("JMenu_2"); jmenu1.add(new JMenuItem("JMenuItem_1 sans Icon")); jmenu1.add(new JMenuItem("JMenuItem_2 avec Icon",new ImageIcon("c:\\...gif"))); jmenu1.addSeparator(); jmenu1.add(new JRadioButtonMenuItem("JRadioButtonMenuItem",true)); jmenu1.addSeparator(); jmenu1.add(new JCheckBoxMenuItem("JCheckBoxMenuItem",true)); jmenu1.addSeparator(); JMenu sm=new JMenu("Sous Menu_1"); jmenu1.add(sm); sm.add(new JMenuItem("JMenuItem_1 de Sous Menu_1")); sm.add(new JMenuItem("JMenuItem_2 de Sous Menu_1"));//ajout des deux Menu lobjet "menuBar" menuBar.add(jmenu1);menuBar.add(jmenu2); fentre.pack();fentre.show();

  • Rsumons : on sait faire!!!!Cration de fentres Ajout des composants graphiques dans la fentreOrganisation de la disposition des objets graphiquesOn connat les objets graphiques pour traiter le texte, les images, les choix, les listes et les boutons de commande Comment associer les actions de lutilisateur sur linterface graphique pour manipuler les donnes de lapplication?????? programmation des interfaces

  • ProblmatiquejeanGillesPhilipeUn interprteur dvnement graphique qui rcupre les donnes, cre un objet Employ et lajoute la liste Vecteur demploys

  • Programmation vnementielleConcevoir un programme comme une entit normalement inactive qui ragit de faon particulire chaque vnement (prvu) qui intervient.Programmer une interface consiste associer un traitement chaque objet Graphique ObjetGraphiquestimulievt1evt2Tant que NON(Evt) faire Rien Selon que Evt=evt1: action1 Evt=evt2: action2

    application

  • Quest ce quun vnement???Les vnements sont des objets java Un vnement graphique peut treUn clicUn double clicBouger la sourisTaper du texteFermer une fentre .Chaque objet graphique est capable de ragir un certain type dvnement

  • Les vnements en javajava.lang.Objectjava.util.EventObjectJava.awt.AWTEventjava.awt.event.ActionEventExemple : tous les boutons dclenchent des ActionEventvos vnements gnraux, (pas forcment graphiques)vos vnements graphiques

  • mthodes: lobjet vnementTous les vnement sont des sous class de EventObject.Chaque vnement porte un certain nombre dinformation sur son contexteLa classe EventObject maintent un seul mthode hrit par tous les evnement: public Object getSource()Elle retourne une rfrence vers lobjet graphique responsable de lvnement.exemple MouseEvent propose deux mthode getX() et getY() qui retourne les coordonnes du point o lvnement est arriv

  • Gestion des vnements en java modle par dlgationUn vnement est propag d'une Source vers un objet Listener (ou couteur) en invoquant une mthode du listener et en passant une sous-classe de EventObject qui dfinit le type dvnement qui a t engendr.

    SourceListenervnement

  • Gestion des vnementsChaque fois que lutilisateur click sur un bouton de commande, tape du texte ou bouge la souris., un vnement survient Lobjet graphique concern cre un objet vnement de type dvnement correspondant .programmer une interface graphique consiste alors associer un comportement chaque vnement appropris. JAVA: pour chaque type dvnement une interface Listener est associer.Tous ce que vous avez faire: cest dimplmenter les interfaces correspondant aux vnements souhait.

  • Les listenersUn objet listener est un objet qui implmente (remplit le contrat d) une interface spcifique. Cette interface (ce contrat) prvoit une ou plusieurs mthodes qui peuvent tre invoques par une source dvnements.Java maintient une liste dinterfaces pour chaque type dvnementChaque Listener reoit une rplique identique de lvnement original.Chaque Listener est compos dun ou plusieurs mthode Chaque mthode prend en paramtre un objet vnement appropri.

  • Tableau de lAPI Event et Listener

    Listener InterfaceMthodes et vnementActionListener actionPerformed(ActionEvent) ComponentListenercomponentHidden(ComponentEvent) componentMoved(ComponentEvent) componentResized(ComponentEvent)MouseListenermouseClicked(MouseEvent) mouseEntered(MouseEvent) mouseExited(MouseEvent) . WindowListener windowActivated(WindowEvent) windowClosed(WindowEvent) windowClosing(WindowEvent) windowDeactivated(WindowEvent) . .

  • Exemple ActionListenerExemple dune interface prdfini par java pour traiter les vnements de type ActionEvent.

    package java.awt.event;import java.util.EventListener;

    public interface ActionListener extends EventListener {public void actionPerformed(ActionEvent e);}

  • La source= Tous les composants graphiques quon a vu.L'objet Source met des vnements. La source enregistre ses listeners par des mthodes setListener ou addListener.Toutes les sources dvnements supportent un modle multicast pour lmission : plusieurs listeners peuvent tre ajouts pour une seule source.L'API na aucun priori sur l'ordre dans lequel les vnements sont dlivrs.

  • Mthode connue sur composant inconnuchronometreOnexplosif

    Public Class Chronometre implements ActionListenerPublic Class Explosif implements ActionListeneractionPerformed(ev)actionPerformed(ev)ActionEvent ActionEvent Listeners Le bouton ne voit que des ActionListener

  • RsumonsLes vnement sont traits par des classes qui implmentent des interfaces XXXListenerJava prvoit une interface XXXListener pour chaque type dvnementLimplmentation des interfaces XXXListener reprsente le comportement de lapplication en rponse lvnement en question.Les objets des classes implmentant un Listener doivent tre rattachs lobjet graphique en question.

  • Les tapesUne fois vos composants graphiques crs il suffit de crer un ou plusieurs objets Listeners (implmentant le protocole == dclarant une mthode de raction un vnement)de les dclarer comme listeners de vos composants graphiques (addActionListener.. addMouseListener)et cest tout. :^)

  • Exemple trs simple!!!!!!!!!!!crivez une interface graphique contenant un bouton de commandeLe bouton de commande contient le chiffre 0;Programmer le bouton de tel faon que le chiffre dans le bouton sincrmente chaque clickIndication: utilisez linterface ActionListener

  • Solution:Quel est lvnement quon veux programmer?? Click (souris)Le Listener ou couteur de lvnement click est linterface ActionListener.Implmenter cette interface == implmenter la mthode actionPerformed: public class EcouteurIncr implements ActionListener public void actionPerformed(ActionEvent e){ }Rattacher une instance de cette class lobjet bouton : MonBouton.addActionListener(EcouteurIncr);

  • Plus prcisment import java.awt.event.*;import javax.swing.*;public class EcouteurIncrmentation implements ActionListener{ int i=0; public EcouteurIncrmentation() {} public void actionPerformed(ActionEvent e){ System.out.println("************"+e.toString()); ((JButton)e.getSource()).setText("click n "+i);i++; }}public class Testincrmentation { public Testincrmentation() { } public static void main(String[] args) {JFrame.setDefaultLookAndFeelDecorated(true); JFrame fentre =new JFrame("fentre programm"); fentre.setSize(300,100); JPanel p=new JPanel(); JButton incr=new JButton("click ici"); incr.setSize(20,20); incr.addActionListener(new EcouteurIncrmentation()); p.add(incr); fentre.getContentPane().add(BorderLayout.SOUTH,p); fentre.show(); }}