Home

Cours 5 - interface graphique.key

image

Contents

1. avec setDoubleBuffered b activ par d faut ME mE ME drawstring et Antialiasing e drawstring dessine chaque glyphe dans une chaine de texte avec une couleur pour chaque pixel qui est on dans ce glyphe e Anticr nelage du texte antialiasing est une technique pour lisser les contours du texte sur un cran public void paintComponent Graphics g super paintComponent g erases background Graphics2D g2 Graphics2D g cast for java2 g2 setRenderingHint g2 g2 g2 g2 RenderingHints KEY TEXT ANTIALIASING RenderingHints VALUE TEXT ANTIALIAS LCD HRGB my graphics SetColor new Color 255 0 0 fillRect 10 10 200 50 left top width height SetColor new Color 0 0 0 drawString Hello World 20 20 S left BOTTOM 80 Quelques Exemples Pratiques 6 import javax swing import java awt public class SwingDemo extends JFrame 1 public JPanel panel public void init 1 kb Container cp getContentPane this setTitle example 7 this setDefaultCloseOperation CEXIT ON CLOSE panel new JPanel cp add panel public static void main String args i SwingDemo frame new SwingDemo frame init frame setSize 250 250 frame setVisible true Graphics g frame panel getGraphicsC Graphics2D g2 Graphics2D g g2 setColor Color RED for Cint i 0 1 100 1 4 g2 drawLine C Graphics2D car swing d finit les m thodes de
2. des boutons pour les chiffres et les op rateurs 8557 zone texte pour le r sultat 55 Pour aller plus loin http download oracle com javase tutorial uiswing examples components index html Bruce Eckel Thinking in Java 2nde dition Chapitre 13 creating windows and applets 56 Troisi me partie Dessiner son propre composant graphique 57 Dessin des composants Une fen tre ou un panneau est un canevas canvas sur lequel l application dessine ou peint Les composants de l API c est d j fait Le reste c est vous de faire Pixel picture element E Ini EX lectures File Edit Favorites Tools Help j Qsearch Eu Folders History B E OX aA Eg Address C CAMy Docume each HCI Spring 2002 lectures zl a 3 lecture1 ppt Gl lecture2 ppt Gl lecture3 ppt lecture4 ppt Folders ret Desktop B A My Documents C3 Admin 7 Adobe 4 dev lecture4 ppt C2 My eBooks Microsoft PowerPoint Presentation a My Pictures a My webs 1 papers to read Size 179 KB d aigan Attributes normal C Resume Author Chris North E Ce Service 2 References E C3 Reviews EC Teach EC HCI Spring 2002 E graphics ss y lectures C1 stopwatch C3 web 1 course proposal infovis 2 cs2604 Fall 2000 2 cs2604 Fall 2001 e CH Infovis Fall 2001 mw InfoVis Spring 2001 e CC Visual Studio Projects 2 webpage HE My Computer E My Network Places Recyc
3. 7 Interaction entre composant oouvent un v nement cr par un composant modifie un autre composant e x JColorChooser modifie le couleur d un JPanel Comment faire communiquer l auditeur avec tout le monde en respectant le principe d encapsulation e et sans variables globales sans un code trop complexe La solution les classes internes inner class 43 Parenthese les classes internes et anonymes 44 Inner Class Classe interne e D finition d une classe l int rieur d une autre classe Regroupement logique et coh rent de classes Maitrise de leurs visibilit s et de leurs accessibilit s Definition Usage public class Paquet pp ll Cee o A kel 2 public pestination envoi String S class Tarif Tarif c new ka AN private int i 10 Destination d new bestination s public int value return 1 System out println d readLabel return d class Destination private String label Destination String whereTo label whereTo public static void main String args Paquet p new Paquet string readLabel p envoi Tanzanie return label Adapt du livre de Bruce Eckel 45 Inner class D finition usage compilation Une classe interne se d finit exactement comme une classe normale mais dans le block d une autre classe e Elle s utilise comme une classe lt normale e Si elle n
4. Tarif et Destination sont Tarif C new Tarif 4 des interfaces private int i 10 public int value ret 1 Un instance necessaire ks Destination d new Destination private String label dest public String readLabel return label System out println envoie en d readLabel return d 49 50 ASO example event 2 import javax swing import java awt import java awt event public class SwingDemoEvent2 extends JFrame implements ComponentListener 4 JLabel Label JButton button int clicCount 0 DEP d placer le contenu de il _ init dans le class MyButtonActionListener implements ActionListener class constructeur public void actionPerformed ActionEvent e 4 clicCount Label setText Integer toString clicCount j public void init 1 this setTitle example event 2 2 th1is setDefaultCloseOperation EXIT_ON_CLOSE ER 7 public void componentHidden ComponentEvent e Container cp getContentPane public void componentMoved ComponentEvent e cp setLayout new GridLayout 1 2 public void componentResized ComponentEvent e public void componentShown ComponentEvent e button new JButton clique 5 label new JLabel 4 ublic static void main Strin aras label setText j C gL args button addActionListener new MyButtonActionfistener O cp addCbutton cp add label E frame setSize 300 300
5. dessin avec ce type l Pas de maintient de ce qui est dessine donc un redimensionnement efface tout Cint C250 Math random Cint 250 Math random Cint C250 Math random Cint 250 Math random 82 ile 7 ee ATI A dA cM ag apr s redimensionnement efface le contenu import import import import import public java awt java awt image BufferedImage java io javax imageio ImageIO javax swing class SwingDemo8 extends JPanel 1 BufferedImage image public SwingDemo8 BufferedImage image 1 this image image f protected void paintComponent Graphics g int x getWidth image getWidth 2 int y CgetHeight image getHeight 2 g drawImage image x y this j public static void main String args throws IOException 1 SwingDemo8 myDemo new SwingDemo8 image JFrame f new JFrame f setDefaultCloseOperation JFrame EXIT_ON_CLOSE f add new JScrollPane myDemo f setSize 400 400 f setLocation 200 200 f setVisible true int r t de la m thode paintComponent apres redimensionnement 83 ams conserve le contenu import java awt import java awt image BufferedImage import java io import javax imageio ImageIO import javax swing public class SwingDemo9 extends JPanel 1 BufferedImage image public SwingDemo8 BufferedImage image 1 this image image f protected void paintComponent Graph
6. mitte void cuni 4 Une premi re mani re pas while true tr s objet Draw Frames repaint animation happy new Animation Mr Happy Thread myThread new Thread happy Jusqu ici rien n est lanc myThread start 3 Interaction programmation v nementielle Le principal objectif d une application graphique est la programmation v nementielle l utilisateur peut d clencher des v nements et r agir ce qui se passe dans la fen tre La communication est asynchrone Au contraire d un programme en mode console dans lequel le programme r git les actions de l utilisateur sa guise synchrone gt utilisation des threads 32 Interaction programmation v nementielle Exemple d un bouton Un bouton est un l ment graphique sur lequel l utilisateur peut cliquer pour d clencher une action Le bouton ne fait rien tant que l utilisateur n a pas cliqu dessus Lors d un clique un v nement est cr e reste a le traiter gt utilisation des threads 33 Le graphique les v nements et les threads Les 3 threads de la JVM Le premier est le main application N 4 u thread qui se charge d ex cuter la N gt ar m thode main de l application Mac OS X 4 Le deuxi me thread estle toolkit thread dont le r le est de recevoir les v nements du syst me d exploitation par exemple un clic de souris et de les pl
7. code ces bits pour obtenir l alpha le vert le rouge et le bleu 01011 10101 00110 transparents extraits du cours de S bastien Paugii r U Marne la Vall e BufferedImage 2 on acc de aux pixels de fa on g n rique via le WritableRaster avec les m thodes Object getDataElements int x int y Object outData obtient un objet repr sentant un pixel si outData est fourni il est modifi void setDataElements int x int y Object inData e inData est cens repr senter un pixel e il existe aussi des m thodes non g n riques setPixel transparents extraits du cours de S bastien Pauitier U Marne la Vall e BufferedImage 3 exemple r cup ration des valeurs alpha rouge vert et bleu quel que soit le type de l image public String getPixelDescription int x int y Object pixel img dqetRaster getDataElements ix y null ColorModel model img getColorModel return alpha model getAlpha pixel red 4model dqetRed pixel green model qgetGreen pixel blue model getBlue pixel transparents extraits du cours de S bastien Pau r U Marne la Vall e e ily a 2 fa ons d obtenir des images depuis un nom de fichier une URL ou un flux InputStream Toolkit permet d obtenir des images JPG GIF et PNG au moins en lecture seule et au format pr f r de l cran ImageIlO permet la lecture et l criture poss de un m canisme de SPI qui permet d ajoute
8. construction fait deux choses elle cr e une nouvelle classe sans nom qui est une sous classe de lt nom de classe gt d finie par corps elle cr e une instance unique de cette nouvelle classe et retourne sa valeur Int ressant si nous avons besoin une seule instance objet de la classe Cette classe a acc s aux variables et m thodes de la classe dans la quelle elle est d finie 53 import public class SwingDemoEvent3 extends JFrame 1 JTextField a b JButton btn e 0 0 Cursorframe public SwingDemoEvent3 1 Click the mouse 1168 super CursorFrame setSize 400 200 setLayout new FlowLayout add new JLabel Click the mouse a new JTextField 0 4 b new JTextField Q 4 btn new JButtonC RESET adda add b add btn anonymous addMouseListener new MouseAdapter inner classes public void mousePressed MouseEvent e a setText String value0f e getX b setText String value0f e getY 12 addWindowListener new WindowAdapter 4 public static void main String args 4 public void windowClosing WindowEvent e 1 SwingDemoEvent3 app new SwingDemoEvent3 setVisible false app setVisible true dispose System ex1t Q Cd D Se btn addActionListener new ActionListener public void actionPerformed ActionEvent e a setText Q s b setText 0 AT e AT AT Af AT DUTOT Exercice Faire une calculatrice
9. frame setVisible true frame init this addComponentListener this e SwingDemoEvent2 frame new SwingDemoEvent2 l Inspir de Bruce Eckel Thinking in Java 2e dition import javax swing import java awt import java awt event public class SwingDemo3 extends JFrame 4 JButton b1 new JButton Clique ici JButton b2 new JButton Clique la JTextField txt new JTextField 10 EN O example 3 Swing Demo 3 Clique ici Clique la inner class class ButtonListener implements ActionListener INNER CLASS DEF i public void actionPerformed ActionEvent e 1 TH String name JButton e getSource getText txt setTextCname 5 END OF INNER CLASS DEFINITION ButtonListener bl new ButtonListener public void init 1 b1 addActionListener bl b2 addActionListener bl Container cp this getContentPane this setTitle example 3 cp add new JLabel Swing Demo 3 cp setLayout new FlowLayout cp add b1 4 4 cp add b2 e cp add txt d D D Af Af Af D OTTO D public static void main String args A ft o SwingDemo3 frame new SwingDemo3 frame init frame setSize 200 200 frame setVisible true 42 end of SwingDemo3 class definition plus concentr e Au lieu de inner class utiliser Anonymous Inner classes new lt nom de classe gt argament list corps V Cette
10. l origine pour le rendu translate 0 0 7 coin haut gauche par d faut Zone d effet rectangulaire Clip Par d faut tout mais on peut se restreindre Couleur de dessin e Color coli new Color 255 0 0 RGB mais aussi HSB Police de caract re e Font font1 new Font SansSerif Font BOLD 12 63 Fonctions de dessin avec Graphics Exemple public void drawLine x1 y1 x2 y2 D pend de la couleur courante fill draw remplissage ou contour z Rect Oval String Arc Polygon PolyLine Fonction clear pour nettoyer Une fonction FontMetrics getFontMetrics Renvoi une instance qui mesure le texte Fonction drawlmage pour le dessin d image N cessite une instance de Image Asynchrone Possibilit d coute ImageObserver 64 Dessin avec Graphics2D Fonction public void paint Graphics g appel par Java Mais Graphics Graphics2D depuis v1 1 Transtypage Graphics2D g2 Graphics2D g e Etat de dessin plus labor attributs d Paint peinture Color GradientPaint ou TexturePaint Font police de caract re Clip zone de restriction du dessin Stroke pinceau forme paisseur 1p joins aux ences ransform Matrice affine de transformation Translation rotation zoom penchant sheer Composite r gle de superposition d un pixel de couleur avec un autre Liste de RenderingHint d finissant
11. une utilisation maximale du syst me graphique cible AWT faire une utilisation minimale du syst me graphique cible SWING Utilisation maximale java awt e L objet extFie d d l gue la plupart de ses t ches un composant natif Le programmeur java utilise un objet TextField L objet TextField d l gue une classe adaptateur d pendante de l OS Motif TextField GTKTextField Windows TextField MacOS TextField Le systeme graphique natif realise le plus gros du travail e Pour un aspect et comportement look and feel comme les autres de la plateforme pas besoin de refaire les composants juste s adapter e Contre un catalogue restreint l intersection des GUI le comportement et l aspect d pendent donc de la plateforme 6 Utilisation minimale javax swing Utiliser les l ments natifs pour le strict n cessaire ouvrir une fen tre dessiner des lignes du texte gestion primitive des v nements Tout le reste est assurer par les classes Java JlextField Pour moins de diff rences entre plateformes plus de libert pour cr er et ajouter des nouveaux composants Contre faut tout faire les applications Java n ont pas le m me ook and feel que les autres un peu plus lent Regarder la javadoc les tutoriaux de SUN avec les d mos Architecture Swing Une application une fen tre avec des choses bien plac e Un
12. Developpement Logiciel 2 54 Interface Graphique Composent graphique v nement anastasia bezerianos lri fr Les transparents qui suivent sont inspires du cours de Bas sur le cours du Nicolas Bredeche Univ Paris Sud le cours d Alexandre Allauzen Univ Paris Sud Bruce Eckel Thinking in Java Plan 0 Info 1 Interface Graphique 2 Ev nements 3 Manipulation d images et prochain cours Interface graphique IG IHM Une repr sentation graphique visuelle de l information l interaction entre l homme est la machine e Java un langage ind pendant de la plateforme Une API pour les interfaces graphiques ind pendantes de la plateforme aspect graphique classes et interface pour dessiner l information aspect interaction g rer les v nements d utilisateur Java et fen tre e Chaque plateforme a son syst me de gestion d interface utilisateur GUI Graphical User Interface systems Linux XWindows Mac OS Quartz Microsoft Windows GDI boite outils d interface offre une biblioth que d objets interactifs les widgets que l on assemble pour construire l interface Exemple Java Swing Qt C Gtk C lt une langue de programmation mono multi platform 4 Java et fen tre e L API Java doit communiquer avec le GUI cible via des Adaptateurs entre GUI et boite outils mais avec quelle strat gie faire
13. acer dans une file d attente Event Dispatcher Thread EDT d v nements pour tre trait s par ICI 1 Gestionnaires Le troisi me tread appel event GE dispatching thread ou EDT listeners il r partit les v nements re us vers les composants concern s et invoque les m thodes d affichage 34 Le clique sur un bouton e Lors d un clique sur un bouton un v nement est cr e cet v nement est plac dans une file d attente des v nements AWT Event Queue dans l attente d tre trait par l EDT e Attention il y a un seul thread EDT pour traiter les v nements et redessiner L EDT traite un v nement apres l autre faut attendre la fin du traitement pour passer autre chose 35 Gestion des v nements Un composant qui cr e des v nements est appel source Le composant source d l gue le traitement de l v nement au composant auditeur Un composant qui traite un v nement est appel auditeur listener Un composant auditeur doit s inscrire aupr s du composant source des v nements qu il veut traiter Un v nement peut provenir du clavier un clique souris un passage de la souris A chaque type d v nement une classe existante A chaque type d v nement son type d couteur faire 36 public class SwingDemoEventO extends JFrame implements ActionListener public void actionPerf
14. avax swing import java awt e O example 2 public class SwingDemo2 extends JFrame 4 Swing Demo 2 public void init clique ici this setTitle example 2 clique l this setDefaultCloseOperation EXIT ON CLOSE Container contentPane this getContentPane contentPane add new JLabel Swing Demo 2 contentPane setLayout new FlowLayout contentPane add new JButton clique 1c1 contentPane add new JButton clique Lon j d placer le contenu de init public static void main String ar dans le constructeur JFrame frame new SwingDemo CCSwingDemo2 frame init frame setSize 200 200 frame setVisible true transps suivants aussi L 20 Inspir de Bruce Eckel Thinking in Java 2e dition i x o eoo RG JUPE HERD import java awt Button Button 11 Button 12 Catton 37 public class SwingDemo4 extends JFrame public void init 4 Bc YE Container cp getContentPane p Button 4 Button 5 this setTitle example 4 Emone Raton this setDefaultCloseOperation EXIT ON CLOSE LL uus Button 10 Button 11 Button 12 Button 13 Button 14 Button 15 Button 16 Button 17 cp setLayout new FlowLayout for int 120 1 lt 20 1 _ cp add new JButton Button 1 public static void main String args 4 SwingDemo4 frame new SwingDem
15. cation 70 Un cran avec 3 applications m Formi EX lectures File Edit View Favorites Tools Help Back gt D Search Gh Folders t History y US X A Ed Ier car Domenech ere s D EH c Folders lecture1 ppt File Edit Format View Help Eu He Eok Format Ven He al kanaka f Desktop Gl lecture2 ppt fasd fas H My Webs 2 papers to read H Proposals H E Research oof J Resume EC Service References Reviews ECC Teach EH HCI Spring 2002 C graphics lectures C stopwatch i C3 web course proposal infovis C2 cs2604 Fall 2000 1 cs2604 Fall 2001 1 Infovis Fall 2001 H7 InfoVis Spring 2001 H 0 Visual Studio Projects e 2 webpage My Computer My Network Places Fa Recycle Bin mM Demo rray e LC DemoList H Infoviz H Visual Debugger Type Microsoft PowerPoint Presentation Author Chris North Title Event Based Programming Subject cs3724 Size 1 Size 179 KB Attributes normal Author Chris North E Bud Popa g Chis ab t MA f 2 8 My Documents Gl lecture3 ppt kasfjskIfjaskfjsjf 1 Admin lectures lecture4 ppt sf EMO Adobe BRL dev lecture4 ppt S SS My eBooks Microsoft PowerPoint Presentation ssi SS CS My Pictures Modified 01 24 2002 5 48 PM as Z 179 KB e My Computer A 71 Un cran fermons une application Envoie d v nements aux fen tre restantes repaint m Formi EX lectures Fil
16. conteneur container top level LE conteneur le composant racine par exemple la fen tre e Composants atomiques simples par ex un bouton Des composants interm diaires Compos s qui permettent de diviser la fen tre conteneurs pour plusieurs composants des panneaux Un composant graphique doit pour apparaitre faire partie d une hi rarchie de conteneur c est un arbre avec e pour feuille des composants atomiques et e pour racine un top level container Un composant ne peut tre contenu qu une seule fois g arbre des widgets ToolBarDemo Gap If this were a real app it would have taken you to the previous something If this were a real app it would have taken you up one level to something R r If this were a real app it would have taken you to the next something acine compos correspond une FEN TRE fen tre de l appli JFRAME Noeuds compos PANNEAU DE Structure visuel ou COMPOSANTS fonctionnel du contenu JPANEL ZONE DE TEXTE BARRE D OUTILS JTEXTAREA JTOOLBAR BOUTTONS BOUTTON2 JBUTTON JBUTTON Feuille simple avec lesquels l utilisateur peut interagir BOUTTON 1 JBUTTON Architecture Swing version objet e Hi rarchie tr s partielle des classes couvrant les composants des swings Classe abstraite awt Component d crit caract ristiques co
17. e Edit View Favorites Tools Help Bak gt search Gy Folders C History L oS Address C C My Documents Teach _HCI Spring 2002 lectures D Untitled Notepad Hal Fle Edt Format View Heb Folders s Take Tak A Desktop d ERO My Documents f asf fast jf a i lectures 5 if Fatt B lecture4 ppt asdf SS Microsoft PowerPd sadkfs lkfskjfsjfk SS x sek dd NN WE Modified 01 24 21 asd fasd papers to read Size 179 KB fas EC Proposals f BS Prop Attributes norma asf Mm saf Po Author Chris Nort 5 DI Service T References BIMO Reviews Command Teach BHO HCI Spring 2002 Tue graphics SE lectures C stopwatch cof web Cl course proposal infovis 1 cs2604 Fall 2000 1 cs2604 Fall 2001 H H MELDE Un cran fermons une application 2 d s fen tre restantes vers ses composants repaint 73 Un cran fermons une application 3 d s fen tre restantes vers ses composants repaint 74 Peinture en Java repaint e Repaint event e Les composants Java Swing attrapent les v nements repaint appel des m thodes paintComponent e h ritage dun composant et redefinition de paintComponent Appel explicite repaint gt paintComponent e paint et paintComponent paint vient de AWT et en Swing paint lance paintComponent paintBorder and paintChildren en g n rale avec Swing nou
18. em JCheckBoxMenultem e exte JTextField Les auditeurs faut impl menter l interface qui correspond au type de l v nement e e x ActionEvent gt ActionListener public interface ActionListener extends EventListener Invoked when an action occurs public void actionPerformed ActionEvent e 39 Ev nements Auditeur e out v nement h rite de la classe EventObject e out auditeur correspond une interface qui h rite de EventListener toute classe d sirant recevoir des notifications d un type d v nement donn devra impl menter l interface correspondante ActionEvent ActionListener MouseEvent MouseListener KeyEvent KeyListener 40 Auditeur prendre son abonnement 1 addActionListener unObjet actionPerformed unEvnt 2 JButton ERU R cepteur MonBouton d ven ments d ven ments unObjet listener rm actionPerformed unEVvnt 3 4 removeActionListener unObjet e Un auditeur doit e abonner aupr s du composant e Un auditeur peut avoir plusieurs abonnements e x un auditeur traite les v nements de plusieurs boutons e Un composant peut avoir plusieurs auditeurs GX un pour les v nements click et mouvement sur le bouton 4 import javax swing import java awt import java awt event ComponentEvent import java awt event ComponentListener public class SwingDemoEvent1 extends JFrame implements ComponentLis
19. est pas d clar e private ou si elle nest pas anonyme elle est accessible hors de la classe englobante ClassEnglobante Classelnterne foo new ClassEnglobante ClasseInterne Paquet Destination p new Pagquet Destination Joyeuse Compilation gt javac Paquet java gt ls 1 Paquet Destination class PaquetSTarif class Paquet class Paquet java 46 Inner class Pourquoi Remarques pr liminaires une classe interne peut tre private protected ou public une classe peut tre interne une classe une m thode Pour cacher masquer des m canismes des impl mentations Une classe interne a un acces total aux l ments de la classe englobante L utilit vient avec l association des classes internes et upcasting ourtout avec l impl mentation d interface 47 Inner class et upcasting Supposons que nous disposions des interfaces public interface Tarif int value public interface Destination String readLabel Definition public class Paquet private class PTarif implements Tarif private class PDestination implements Destination L impl mentation est i totalement cach e Seule est a d visible une r f rence sur te A EO l impl mentation de l interface ec e Destination d new PDestination s see return d 48 Inner class classe anonyme public class Paquet2 String dest public Destination envoi String s dest s
20. ics g g drawImage image 0 0 getWidth getHeight 0 0 image getWidth image getHeight this drawImage image dst src null this dst how many pixels we ll draw src part of the original image to draw j public static xotd mainCStringl args throws IOException mms mm um mi um um um mm um mm zm um OU me um mm TE um en mm um mon mom om um Fe Sen bk e af dl wi wn bm pm pm Pm mm S B fferedImage image ImageTO read new File imdge jpg 7 SwingDemo9 myDemo new SwingDemo9 image JFrame f new JFrame f setDefaultCloseOperation JFrame EXIT ON CLOSE f add new JScrollPane myDemo f setSize 400 400 f setLocation 200 200 f setVisible true apres redimensionnement H 84 change la taille Un mot sur les images Source S bastien Paumier C12 sa y Rd ges EM ImagelO e la classe 3ava awt Image poss de 3 impl mentations BufferedImage tableau de pixels stock en m moire VolatileImage image stock e dans la carte graphique Toolkitimage image charg e de facon paresseuse transparents extraits du cours de S bastien Pauis r U Marne la Vall e BufferedImage 1 pour passer d une s quence d octets repr sentant une image un tableau de pixels il y a 2 interm diaires 01011101010011010101 le Raster qui rep re ce qui correspond un pixel 01011101010011010101 le ColorModel qui d
21. la qualit de rendu 65 Peinture mode d emploi import java awt Graphics import java awt Graphics2D Java2 1 r cup rer le graphics context du composant Graphics g myJPanel getGraphics Graphics2D g2 Graphics2D g 2 Peindre g2 drawLine xl yl x2 y2 66 Nouveau composant un exemple public class MyPanel extends JPanel like paint Graphics g but only interior public void paintComponent Graphics g super paintComponent g erases background Graphics2D g2 Graphics2D g cast for java2 g2 g2 g2 g2 my graphics SetColor new Color 255 0 0 fillRect 10 10 200 50 left top width height SetColor new Color 0 0 0 drawString Hello World 20 20 S left BOTTOM Peinture exemples de draw et fill Point x y e Line pt1 pt2 PolyLine pt list Arc Oval pt w h Rectangle pt w h e RoundRectangle Polygon point list Image file x y Text string x y 68 Quand repeindre L cran est une feuille de dessin unique Toutes les fen tres sont peintes sur la m me feuille Les fen tres ne se souviennent pas de ce qu elle cache Besoin de repeindre d s qu une nouvelle zone de l cran apparalt v nements de repaint e ouverture changement de dimension mise au premier ou arri re plan e quand d autre fen tre viennent modifier l cran 69 Un cran avec une appli
22. le Bin 1 CC DemoArray H a DemoList 2 Infoviz GS My Briefcase w Visual Debugger Modified 01 24 2002 5 48 PM Tome Eed ae Di Type Microsoft PowerPoint Presentation Author Chris North Title Event Based Programming Subject cs3724 Size 175 179 KB tj My Computer A Le syst me de coordonn es Presque du cart sien 0 0 haut gauche width 0 0 height width height 60 Fen tre et sous fen tre e Chaque composant poss de son espace de dessin Sa sous fen tre subwindow Subwindow Aire rectangulaire dans le composant parent avec son propre syst me de coordonn es Clipping les r gles un composant ne peut peindre hors de sa sous fen tre Sur un de ses composants 0 0 JPanel ef en ET Mon propre composant graphique H rite de Component JComponent ou JPanel Red finir la fonction paint void paint Graphics G Arg Graphics2D g2 Graphics2D G Arg Herite de repaint pour lancer paint Appeler repaint si nous voulons mettre a jour le composant Asynchrone gestion automatique du Graphics Herite de methodes externes dont il faut tenir compte setSize setEnable setBackground setFont setForeground etc 62 void paint Graphics G_Arg Une instance de Graphics est donn e par java pour ce composant afin de dessiner e Un Graphics possede un tat ranslation
23. lement public static void main String args JFrame jf new JFrame Et hop jf setVisible true modal jf setDefaultCloseOperation JFrame EXIT ON CLOSE JDialog jd new JDialog jf Un dialogue true jd a setVis ible true Simple Modal Dialogs d pend de Some simple message dialags an OK fin the L amp F s words 2 Yes Mo in the L amp F s words 2 YesiMo in the programmer s words 2 YesiMa Cancel fin the programmer s words Click the Show it button ta bring up the selected dialog Fu JI Eggs arent supposed to be green MA Un dialogue Conteneurs interm diaires Les conteneur interm diaire sont utilis s pour structurer l application graphique Le composant top level contient des composants conteneurs interm diaires e Un conteneur interm diaire peut contenir d autres conteneurs interm diaires Les choix de Swing JPanel le plus simple JScrollPane JSplitPane JTabbedPane J ToolBar Metric System E ken mec dukevVaveRed gif kathyCasmoa uif Panel 1 14 Composants atomiques les contr les de bases interactives widgets Frames Per Second 10 zl JSlider JTexField City Santa Rosa JRadioButton Bird Ner D C3 Cat M Cu 3 Dog Kan 7 C Rabbit Le Pig VW Middle button J Button vi Chin Glasses EEE Hair Teeth JCheckBox Martha Washington Abigail Adams Martha Randolph Dolley Madison Eli
24. mmunes tous les contr les Swings Window Panel CT scom ces Box An gel E JColorChooser JLabel JRadioButton JCheckBox JMenu source cours de P Genoud 10 Top level container le composant racine Une application graphique doit avoir un composant top level comme composant racine composant qui inclus tous les autres composants Un composant graphique doit pour appara tre faire partie d une hi rarchie arbre d un conteneur composant top level l en existe 3 types JFrame JDialog et JApplet e C est un conteneur il contient d autres composants dans son champ content pane 11 Top level container JFrame Une fen tre avec une barre de menu public static void main String args JFrame jf new JFrame Et hop Jf setVisible true Jf setDefaultCloseOperation JFrame EXIT ON CLOSE System out println c est termin System out println pourtant ca marche encore c est termin pourtant a marche encore public JFrame POURQUOI public JFrame String name public Container getContentPane LO O O Et hopl public void setJMenuBar JMenuBar menu public void setTitle String title public void seticonlmage Image image 12 Top level container JDialog Une fen tre pour l change d information peut tre modale bloquant Elle d pend d une autre fen tre si celle ci est ferm e l objet JDialog ga
25. o4 frame init frame setSize 200 700 frame setVisible true l Inspir de Bruce Eckel Thinking in Java 2e dition import javax swing import java awt 5 6 same public class SwingDemo5 extends JFrame 1 public void init 4 Container cp getContentPane this setTitle example 5 this setDefaultCloseOperation EXIT ON CLOS Button 3 Button 4 Button 5 Button 6 Button 7 Button 8 cp setLayout new GridLayout 7 3 for int 120 1 lt 20 14 cp add new JButton Button 1 Button 9 Button 10 Button 11 j Button 12 Button 13 Button 14 public static void main String args SwingDemoS frame new SwingDemo5 frame 1 nit Button 15 Button 16 Button 17 frame setSize 200 700 frame setVisible true Button 18 Button 19 Ni 2 Inspir de Bruce Eckel Thinking in Java 2e dition Organisation d une fen tre ar e a COLLE premiere Fen tre Repris du cours de P Genoud bouton 2 bouton 1 bouton 2 panneauGauche add composantTexte contient panneau gris fonc panneau gauche panneau droite panneauDroite add boutonl panneauDroite add bouton2 panneauGris add panneauGauche panneauGris add panneauDroite composant texte bouton bouton2 fen tre add panneauGris 23 Gestion de l espace ayoutManager Chaque conteneur est un composite il peut contenir soit des composants atomiques soi
26. ormed ActionEvent event System exit Q j public final void init d JButton quitButton new JButton Quit quitButton addActionlistener this getContentPane add quitButton j public static void main String args 4 SwingDemoEventO frame new SwingDemoEvent0 frame init frame setTitle Quit button frame setSize 100 100 frame setVisible true dl de Bruce Eckel Thinking in Java 2e dition 3 Hi rarchie des v nements EventObject N i e sant a t d place affich cach Ev nements s mantiques AWTEvent mae ilit o did ster or diii Expriment ce que fait l utilisateur A ActionEvent AdjustmentEvent ComponentEvent ItemEvent TextEvent Clic sur un bouton D placement du curseur m S lection dans un groupe modification du contenu Selection d un l ment de menu dans une barre de d filement de cases cocher ou dans d un champ ou d une zone ou de liste une liste texte Touche entr e sur zone texte Ev nements de bas niveau N la sagenah amm un composant a obtenu fen tre activ e d sactiv e un conteneur ou perdu la focalisation iconifi e r ouverte ou ferm e open MouseEvent une touche du clavier clic souris d placement a t press e ou relach e du pointeur de la souris 38 ActionEvent de qui pour qui Les sources Boutons JButton JRadioButton JCheckBox JToggleButton e Menus JMenultem JMenu JRadioButtonMenult
27. ques simples par ex un bouton Des composants interm diaires compos s qui permettent de diviser la fen tre conteneurs pour plusieurs composants des panneaux Un composant graphique doit pour apparaitre faire partie d une hi rarchie de conteneur c est un arbre avec e pour feuille des composants atomiques et e pour racine un top level container e Un composant ne peut tre contenu qu une seule fois Le placement des composants dans un conteneur correspond a une strategie de placement d l gu un LayoutManager 28 29 Rappel sur les Threads 1 2 La cr ation d un thread passe par la cr ation d un objet de la classe java lang I hread e Un objet de type Thread repr sente un thread r el et sert a le manipuler contr le priorit synchronisation lt faut indiquer au thread quelle m thode ex cuter faire un run e Cr ons un objet qui soit lt runnable ou h rite de Thread il servira de cible au thread Un objet runnable ou Thread est un objet qui impl mente l interface Runnable avec une m thode run e Tout thread d bute dans la vie par l ex cution d une methode run 30 Rappel sur les Threads 2 2 Une fois cr un thread ne fait rien tant qu il n a pas commencer start start lance l ex cution de run Une fois lancer un thread va jusqu au bout de run du moins tant qu on ne le stop pas stop class Animation implements Runnable
28. r des jars contenant de nouveaux codecs transparents extraits du cours de S bastien PaufA r U Marne la Vall e Plus sur la manipulation d images http www javalobbv org articles ultimate image 9
29. s pouvons faire paintComponent 75 Nouveau composant un exemple public class MyPanel extends JPanel like paint Graphics g but only interior public void paintComponent Graphics g super paintComponent g erases background Graphics2D g2 Graphics2D g cast for java2 g2 g2 g2 g2 my graphics SetColor new Color 255 0 0 fillRect 10 10 200 50 SetColor new Color 0 0 0 drawString Hello World 20 Nouveau composant un exemple public class MyPanel extends JPanel public void paintComponent Graphics g super paintComponent g erases background Graphics2D g2 Graphics2D g cast for java2 my graphics g2 setColor new Color 255 0 0 g2 fillRect 10 10 200 50 g2 setColor new Color 0 0 0 g2 drawString Hello World 20 20 public static void main String args JFrame frame new JFrame my panel JPanel jp new MyPanel frame getContentPane add jp frame setDefaultCloseOperation javax swing JFrame EXIT ON CLOSE frame setSize 250 200 frame setVisible true 17 Flashing un probl me e Ugly flashing pour le repaint e Paint background e Redraw shapes e Cette approche g n re un effet visuel d sagr able e daN em 718 DoubleBufferring Dessiner tous un composant sur une image hors cran Paint background color Paint shapes Puis dessiner l image r sultante dans le JPanel owing le fait pour vous
30. t d autres conteneurs Le placement des composants dans un conteneur correspond une strat gie de placement Chaque conteneur top level ou autre d l gue un LayoutManager la responsabilit de placer les composants en fonction de leurs tailles pr f r es des contraintes du conteneur LayoutManager est une interface Container S lt lt interface gt gt l LayoutManager T 24 Component b 1 y b L 4 Exemples de Layout Manager BorderLayout 5 composants e North South East West et Center BoxLayout en ligne ou en colonne FlowLayout le d faut en ligne El BorderLayoutDemo m E Button 1 PAGE START Button 3 LINE START Button 2 CENTER 5 LINE END Long Mamed Button 4 PAGE END E Boxl ayoutDemo m Lef E FlowLayoutDemo al E 25 Exemples de Layout Manager 2 GridLayoutDemo e Button 1 Button 2 GridLayout en grille ei Horizontal gap Vertical gap pe us GridBagl ayoutDemo SES Long Mamed Button 4 GridBagLayout en grille mais plus sophistique Layout Manager liste et exemples PA Architecture Swing Synthese Une application une fen tre avec des choses bien plac es e Un conteneur container top level lt LE conteneur le composant racine par exemple la fen tre e contient d autres composants dans son champ content pane Ces composants peuvent tre Composants atomi
31. tener 1 JTextArea display public void init this setTitle example event 1 this setDefaultCloseOperation CEXIT ON CLOSE Container cp getContentPane cp setLayout new FlowLayout display new JTextArea display setEditable false cp add display this addComponentListener this j protected void displayMessage String message 1 display append message n display setCaretPosition display getDocument getLength 5 ComponentListener methods public void componentHidden ComponentEvent e 1 displayMessage Ce getComponent getClass getName Hidden j public void componentMoved ComponentEvent e 4 public void componentResized ComponentEvent e 4 public void componentShown ComponentEvent e 4 Inspir de Bruce Eckel Thinking in Java 2e dition Af af D Af a Ki Q Af Ag public static void main String args MA example event 1 SwingDemoEvent1 Resized SwingDemo ventl Shown SwingDemo ventl Moved SwingDemo ventl Moved SwingDemo ventl Resized SwingDemoEvent1 Moved SwingDemo ventl Resized SwingDemo ventl Moved SwingDemo ventl Moved SwingDemo ventl Moved SwingDemo ventl Moved SwingDemoEvent1 Resized d placer le contenu de init dans le constructeur SwingDemoEvent1 frame new SwingDemoEvent1 frame init frame setSize 250 700 frame setVisible true
32. zabeth Monroe Louisa Adams JList 15 Les composants non editables wW Image and Text Text Only Label a KILI tod Wit 31 GC JProgressBar JSeparator JLabel JToolTip b 8 F Click ar drap ta set image 16 Plus compliqu s Swatches H Styled Text This is an uneditahle JColorChooser zu Recent JEditorPane which was initialized with HTML text ton a URL JEditorPane and JlextPane Preview g Sample Text Sample Text JTextArea lis is an edifable JfTextdrea A erf area isa plain texi omponent wich means that m SE Local Disk C DVD RW Drive D Jlree though H can display text in Mia Familia Shared Documents Removable Disk E Ay fot aui of the foxi ici fhe o Sharon are font 4 E Maya File Name 3 Muffin es fe bes 7 EI Arya JFileChooser winky Bongo 17 Les composants Swing e http docs oracle com javase tutorial ui features components html 18 import javax swing public class SwingDemol public static void main String args JFrame frame new JFrame frame setTitle example 1 frame setDefaultCloseOperation javax swing JFrame EXIT ON CLOSE frame getContentPane add new JLabel Swing Demo 1 frame getContentPane add new JButton clique ici frame setSize 100 50 frame setVisible true l 9 Inspir de Bruce Eckel Thinking in Java 2e dition import j

Download Pdf Manuals

image

Related Search

Related Contents

FujiFilm 16395603 Digital Camera User Manual  Air Nailer Stapler 32mm - Werkzeug-Profi    Alcatel-Lucent IAP93    Petit grillon numéro 1 de novembre 09  Voyager Focus UC  Value 17.99.1320-1 flat panel floorstand  AIS TESTER M1 - GMDSS Test Equipment  Saint Eble, mode d`emploi pour l`aventure  

Copyright © All rights reserved.
Failed to retrieve file