Interfaces Graphiques



Documents pareils
Interfaces graphiques avec l API Swing

Cours 2 : programmation des interfaces graphiques

Le langage JAVA G. Baulieu Institut de Physique Nucléaire de Lyon Septembre 2009

Développement Logiciel

Programmation Orientée Objet

TP3. Mail. Attention aux fausses manoeuvres lors de ce TP vous pouvez endommager votre mail sur ouindose.

Construire des plug-ins pour SAS Management Console SAS 9.1

Java 7 Les fondamentaux du langage Java

Introduction au langage Java

Création d un service web avec NetBeans 5.5 et SJAS 9

Programmation en Java Interface graphique. NGUYEN Thi Minh Tuyen

Auto-évaluation Programmation en Java

Structure d un programme et Compilation Notions de classe et d objet Syntaxe

Desktop Intégration. Rémi Forax

JAVA 8. JAVA 8 - Les fondamentaux du langage. Les fondamentaux du langage Java. Avec exercices pratiques et corrigés JAVA 8 29,90.

Sécurité Java 2. Première approche. Installation des exemples. Exemple d'une applet

L Histoire de Java. «Portable» veut dire qu il peut tourner sur plusieurs systèmes d exploitations différents ; Windows, Linux

TP1 : Initiation à Java et Eclipse

Rapport de stage. Reprise d'un programme Java, développement web et utilisation de CMS

Outils, langage et approche Android Une introduction. Nicolas Stouls lyon.fr

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère

Programmer en JAVA. par Tama

Fichiers d'archives java - *.jar

IFT287 Exploitation de base de données relationnelles et orientées objet. Laboratoire Mon premier programme Java en Eclipse

Encapsulation. L'encapsulation consiste à rendre les membres d'un objet plus ou moins visibles pour les autres objets.

Package Java.util Classe générique

Design patterns. Design patterns - définition. Design patterns - avantages

Page 1 sur 5 TP3. Thèmes du TP : l la classe Object. l Vector<T> l tutorial Interfaces. l Stack<T>

Flux de données Lecture/Ecriture Fichiers

Corrigé des exercices sur les références

Calcul Parallèle. Cours 5 - JAVA RMI

L'essentiel de Java et de l'objet

Cours 1 : Introduction. Langages objets. but du module. contrôle des connaissances. Pourquoi Java? présentation du module. Présentation de Java

Remote Method Invocation Les classes implémentant Serializable

Unity. Moteur de jeu 3D et 2D. Cross platform: Windows, Mac, Linux, ios, Android, Blackberry, Xbox, Playstation, Wii

Table des matières Introduction Démarrage Les composants graphiques... 26

Logiciel VOIP Annexe

Java Licence Professionnelle Cours 7 : Classes et méthodes abstraites

Note Technique. 1. Objectif. 2. Prérequis. 3. Installation

as Architecture des Systèmes d Information

AUVRAY Clément (168187) HOMBERGER Alexandre (186897) GLADE. Langages, outils et méthodes pour la programmation avancée Page 1 sur 12

Langage et Concepts de Programmation Objet. 1 Attributs et Méthodes d instance ou de classe. Travaux Dirigés no2

INITIATION AU LANGAGE JAVA

Travaux pratiques Détermination de la capacité de stockage des données

LMI 2. Programmation Orientée Objet POO - Cours 9. Said Jabbour. jabbour@cril.univ-artois.fr

Logiciel de gestion de caisse et d ardoises

TP2 : Client d une BDD SqlServer

Java Licence professionnelle CISII,

TD/TP PAC - Programmation n 3

Premiers Pas en Programmation Objet : les Classes et les Objets

Une introduction à Java

Introduction à Eclipse

Programmation Objet Java Correction

La Programmation Orientée Agent Les Agents Réactifs

Contre exemple de présentation

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java

PARCOURS 3 EXPERIMENTATION APPRENTISSAGE : PHASE 2 CARA CREATION DU PROGRAMME POUR LA PHASE 2

Langage Java. Classe de première SI

TD/TP PAC - Programmation n 3

Projet de programmation (IK3) : TP n 1 Correction

Serveur d'archivage 2007 Installation et utilisation de la BD exist

TP SIN Programmation sur androïde Support : eclipse

TP Composants Java ME - Java EE. Le serveur GereCompteBancaireServlet

ET REGISTRE DE PRESENCE

Chapitre 10. Les interfaces Comparable et Comparator 1

Introduction à Windows 8

BIRT (Business Intelligence and Reporting Tools)

PARAMETRER LA MESSAGERIE SOUS THUNDERBIRD

Tutoriel d installation de Hibernate avec Eclipse

NOTICE TELESERVICES : Créer mon compte personnel

GUIDE UTILISATEUR SYSTEMES CCTV

RMI le langage Java XII-1 JMF

Un ordonnanceur stupide

Prénom : Matricule : Sigle et titre du cours Groupe Trimestre INF1101 Algorithmes et structures de données Tous H2004. Loc Jeudi 29/4/2004

Environnements de développement (intégrés)

UTILISATION DU MODULE PHOCAGALLERY

Java Licence Professionnelle CISII,

La base de données XML exist. A. Belaïd

Initiation à JAVA et à la programmation objet.

Présentation du PL/SQL

PROGRAMMATION PAR OBJETS

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

Classe Interne, Anonyme & Enumération

SOMMAIRE. Présentation assistée sur ordinateur. Collège F.Rabelais 1/10

Solutions du chapitre 4

Java3D. Généralités sur la synthèse d'images temps réel. Généralités sur Java3D. d 'après P.Reignier, UJF

Aide mémoire UML & Java 1ère partie : Introduction. marc.lemaire@u-cergy.fr

API04 Contribution. Apache Hadoop: Présentation et application dans le domaine des Data Warehouses. Introduction. Architecture

Création d'une interface graphique

Exceptions. 1 Entrées/sorties. Objectif. Manipuler les exceptions ;

Corrigés des premiers exercices sur les classes

Université Paris XIII Institut Galilée Master Informatique 1 ère année

Animation d algorithmes sur les automates d états finis

EVOLUTION 7.1 Déroulement DREAM INFO 1 Dossier 23 Ciel Gestion Commerciale.

Synchro et Threads Java TM

ACTIVITÉ DE PROGRAMMATION

TD Objets distribués n 3 : Windows XP et Visual Studio.NET. Introduction à.net Remoting

CAPTURE DES PROFESSIONNELS

Cours 1: Java et les objets

Transcription:

Interfaces Graphiques 1

java.awt : le premier package pour réaliser des interfaces graphiques, mais les composants AWT utilisent les ressources du système d exploitation javax.swing est portable. les exécutions sont moins rapides import java.awt.*; import javax.swing.*; les classes du swing hérite la classe Container du awt (la classe qui contient les composants graphiques) elles commencent par la lettre J majuscule 2

Swing une version améliorée de AWT mais ne le remplace pas (certaines classes de awt est utilisées dans swing) GUI (graphical user interface ) programmation événementielle événement (event) est un objet qui signale un événement à un écouteur (listener) En générale c est un composant qui lance un événement (par exemple on clique un bouton) Un écouteur exécute un programme spéciale (event handler) à la suite d un événement 3

Exception Une exception est un événement si une exception est lancée, l événement s est produit l écouteur est le bloc catch 4

Object Component BorderLayout FlowLayout GridLayout Window Container java.awt Frame JFrame JComponent javax.swing AbstractClass 5

JFrame JComponent JPanel JMenuBar AbstractButton JLabel JMenuItem JTextArea JTextComponent JTextField JButton JMenu 6

Les classes qui définissent des composants graphiques hérite de la classe JComponent qui hérite de la classe Container JButton: un bouton avec un libellé JCheckBox: une case à cocher JComboBox : une liste déroulante JLabel: affichage d un texte court JList: composants permettant de sélectionner une ou plusieurs valeurs JRadioButton:des buttons à choix exclusif JScrollBar: barres de défilement JScrollPane: JTextComponent: JTextArea:zone de texte plusieurs lignes JTextField:zone de texte une ligne JFrame : fenêtre JPanel définition des zones graphiques où on place divers composants graphiques 7

Classe Container La classe Container ou ses classes descendantes peuvent contenir des composants par exemple JFrame et JPanel Une interface graphique est composée en général d un conteneur (Container) (JFrame ou JPanel) des composants inclus à ce conteneur (JButton, JLabel, etc.) la disposition des composants à l intérieure du conteneur (Container) (GridLayout,BorderLayout, FlowLayout) 8

import javax.swing.jframe; public class FirstWindow { public static void main(string[] args) {JFrame f1=new JFrame(); f1.settitle("firstwindow"); f1.setvisible(true);f1.setsize(300,200); ou import javax.swing.jframe; public static final int WIDTHFenetre = 300; public static final int HEIGHTFenetre = 200; public class FirstWindow extends JFrame {public FirstWindow( ) { setsize(width, HEIGHT); settitle("first Window Class"); setvisible(true); setdefaultcloseoperation(jframe.do_nothing_on_close); public static void main(string[] args) {FirstWindow f1=new FirstWindow(); 9

Classe Color La classe Color est dans le package awt Il y a des constantes pour des couleurs de base Copyright 2008 Pearson Addison-Wesley. All rights reserved 10

import javax.swing.jframe; import javax.swing.jlabel; import java.awt.color; class ColoredWindow extends JFrame { public static final int WIDTH = 300; public static final int HEIGHT = 200; public ColoredWindow(Color thecolor) { super("no Charge for Color" ); setsize(width, HEIGHT); setdefaultcloseoperation(jframe.exit_on_close); getcontentpane( ).setbackground(thecolor); JLabel alabel = new JLabel("Close-window button works."); add(alabel); public ColoredWindow( ) { this(color.pink); public class DemoColoredWindow {public static void main(string[] args) { ColoredWindow w1 = new ColoredWindow( ); w1.setvisible(true); ColoredWindow w2 = new ColoredWindow(Color.YELLOW); w2.setvisible(true); 11

Copyright 2008 Pearson Addison-Wesley. All rights reserved 12

Les composants sont disposés en fonction de BorderLayout Layout GridLayout méthode setlayout setlayout (new BorderLayout()) ou BorderLayout g=new BorderLayout(); setlayout(g); 13

Copyright 2008 Pearson Addison-Wesley. All rights reserved 14

import javax.swing.jframe; import javax.swing.jlabel; import java.awt.borderlayout; class BorderLayoutJFrame extends JFrame { public static final int WIDTH = 500; public static final int HEIGHT = 400; public BorderLayoutJFrame( ) { super("borderlayout Demonstration" ); setsize(width, HEIGHT); setdefaultcloseoperation(jframe.exit_on_close); setlayout(new BorderLayout( )); JLabel label1 = new JLabel("First label"); add(label1, BorderLayout.NORTH); JLabel label2 = new JLabel("Second label"); add(label2, BorderLayout.SOUTH); JLabel label3 = new JLabel("Third label"); add(label3, BorderLayout.CENTER); public class BorderLayoutDemo { public static void main(string[] args) { BorderLayoutJFrame gui = new BorderLayoutJFrame( ); gui.setvisible(true); 15

FlowLayout insère les composants l un après l autre de gauche à droite setlayout(new FlowLayout()); setlayout(new FlowLayout(FlowLayout.RIGHT); GridLayout gère comme un tableau à 2 dimensions setlayout(new GridLayout(rows, columns)); méthode add a un seul argument add(label) les composants sont ajoutés en commençant par la première ligne et de gauche à droite 16

PANELS Un panel est un objet de classe JPanel qui est un conteneur (container) pour regrouper des petits objets dans un panel diviser un JFrame ou un autre conteneur (Container) setlayout(new BorderLayout()); JPanel autrepanel = new JPanel(); autrepanel.setlayout(new FlowLayout()); il n est pas nécessaire d utiliser la méthode getcontentpane comme pour JFrame 17

import javax.swing.jframe; import javax.swing.jpanel; import java.awt.borderlayout; import java.awt.gridlayout; import java.awt.flowlayout; import java.awt.color; import javax.swing.jbutton; import java.awt.event.actionlistener; import java.awt.event.actionevent; public class PanelDemo extends JFrame implements ActionListener { public static final int WIDTH = 300; public static final int HEIGHT = 200; private JPanel redpanel,whitepanel,bluepanel; public PanelDemo( ) { super("panel Demonstration"); setsize(width, HEIGHT); setdefaultcloseoperation(jframe.exit_on_close); setlayout(new BorderLayout( )); JPanel biggerpanel = new JPanel( ); biggerpanel.setlayout(new GridLayout(1, 3)); redpanel = new JPanel( ); redpanel.setbackground(color.light_gray); biggerpanel.add(redpanel); whitepanel = new JPanel( ); whitepanel.setbackground(color.light_gray); biggerpanel.add(whitepanel); bluepanel = new JPanel( ); bluepanel.setbackground(color.light_gray); biggerpanel.add(bluepanel); add(biggerpanel, BorderLayout.CENTER); 18

JPanel buttonpanel = new JPanel( ); buttonpanel.setbackground(color.light_gray); buttonpanel.setlayout(new FlowLayout( )); JButton redbutton = new JButton("Red"); redbutton.setbackground(color.red); redbutton.addactionlistener(this); buttonpanel.add(redbutton); JButton whitebutton = new JButton("White"); whitebutton.setbackground(color.white); whitebutton.addactionlistener(this); buttonpanel.add(whitebutton); JButton bluebutton = new JButton("Blue"); bluebutton.setbackground(color.blue); bluebutton.addactionlistener(this); buttonpanel.add(bluebutton); add(buttonpanel, BorderLayout.SOUTH); public void actionperformed(actionevent e) { String buttonstring = e.getactioncommand( ); if (buttonstring.equals("red")) redpanel.setbackground(color.red); else if (buttonstring.equals("white") whitepanel.setbackground(color.white); else if (buttonstring.equals("blue"))bluepanel.setbackground(color.blue); else System.out.println("Unexpected error."); public static void main(string[] args) {PanelDemo gui = new PanelDemo( ); gui.setvisible(true); 19

interface ActionListener défini dans java.awt.event.actionlistener public interface ActionListener extends EventListener{ public void actionperformed(actionevent e) { On inscrit un tel écouter auprès d un composant composant.addactionlistener(ecouteur) On précise ainsi que ecouter est intéressé par les événements ActionEvent provoqués par le composant 20

JButton et JMenuItem sont dérivés de la classe abstraite AbstractButton Lorsque que l on clique sur un Button ou MenuItem, un événement e se produit e devient un argument de la méthode actionperformed un ou plusieurs écouteurs d action réagiront à cet événement JButton nextbutton = new JButton("Next"); nextbutton.setactioncommand("next Button"); JMenuItem choose = new JMenuItem("Next"); choose.setactioncommand("next Menu Item"); (par défaut c est Next pour les 2, on utilise setactioncommand pour les distinguer 21

Copyright 2008 Pearson Addison-Wesley. All rights reserved 22 17-22

Copyright 2008 Pearson Addison-Wesley. All rights reserved 23 17-23

Copyright 2008 Pearson Addison-Wesley. All rights reserved 24 17-24

JTextField et JTextArea sont des classes dérivées de la classe abstraite JTextComponent Copyright 2008 Pearson Addison-Wesley. All rights reserved 25 17-25

import javax.swing.jframe; import javax.swing.jpanel; import java.awt.gridlayout; import java.awt.color; import javax.swing.jmenu; import javax.swing.jmenuitem; import javax.swing.jmenubar; import java.awt.event.actionlistener; import java.awt.event.actionevent; public class InnerListenersDemo extends JFrame { public static final int WIDTH = 300; public static final int HEIGHT = 200; private JPanel redpanel,whitepanel,bluepanel; private class RedListener implements ActionListener { public void actionperformed(actionevent e) { redpanel.setbackground(color.red); //End of RedListener inner class private class WhiteListener implements ActionListener { public void actionperformed(actionevent e) {whitepanel.setbackground(color.white); //End of WhiteListener inner class private class BlueListener implements ActionListener { public void actionperformed(actionevent e) { bluepanel.setbackground(color.blue); //End of BlueListener inner class 26

public static void main(string[] args) { InnerListenersDemo gui = new InnerListenersDemo( ); gui.setvisible(true); public InnerListenersDemo( ) { super("menu Demonstration"); setsize(width, HEIGHT); setdefaultcloseoperation(jframe.exit_on_close); setlayout(new GridLayout(1, 3)); redpanel = new JPanel( );redpanel.setbackground(color.light_gray); add(redpanel); whitepanel = new JPanel();whitePanel.setBackground(Color.LIGHT_GRAY); add(whitepanel); bluepanel = new JPanel( );bluepanel.setbackground(color.light_gray); add(bluepanel); JMenu colormenu = new JMenu("Add Colors"); JMenuItem redchoice = new JMenuItem("Red"); redchoice.addactionlistener(new RedListener( )); colormenu.add(redchoice); JMenuItem whitechoice = new JMenuItem("White"); whitechoice.addactionlistener(new WhiteListener( )); colormenu.add(whitechoice); JMenuItem bluechoice = new JMenuItem("Blue"); bluechoice.addactionlistener(new BlueListener( )); colormenu.add(bluechoice); JMenuBar bar = new JMenuBar( );bar.add(colormenu);setjmenubar(bar); 27

Ecouter de Souris import java.awt.event.*; import javax.swing.*; class Fenetre extends JFrame implements MouseListener {private JTextField champsaisie, champresultat; private JButton b_calcul, b_quitter; public Fenetre() {settitle("gestion de clics"); setbounds (500,20,70,200); addmouselistener(this); // son propre écouteur public void mousepressed (MouseEvent ev) {System.out.println("appui en "+ ev.getx() + " "+ ev.gety()); public void mousereleased (MouseEvent ev) {System.out.println("relachement "+ ev.getx() + " "+ ev.gety()); public void mouseclicked(mouseevent ev) { public void mouseentered(mouseevent ev) { public void mouseexited(mouseevent ev){ public class Sourisbis { public static void main (String[] args) {Fenetre f1=new Fenetre(); f1.setsize(400,140); f1.setvisible(true); 28

//Exercice pris du livre de R. Chevallier, Java 5 import java.awt.*; import java.awt.event.*; import javax.swing.*; class Poly{ protected double[] coef; protected int degre; protected double x, res; public Poly() {coef=new double[10]; public void eval() {res=0; for (int i=0; i<10;i++)res= res+coef[i]*math.pow(x,i); class Fenetre extends JFrame implements ActionListener{ private JTextField[] casecoef; private JTextField casedeg, casex, caseres; private JButton calcul; private Poly p; public Fenetre(Poly pp) {settitle("polynome"); Container cf= this.getcontentpane() JPanel p1=new JPanel(); p1.add(new JLabel("COEFFICIENTS")); casecoef= new JTextField[10]; for (int i=0; i<10;i++) {casecoef[i]=new JTextField(3); p1.add(casecoef[i]); cf.add("north",p1); 29

JPanel p2=new JPanel(); p2.add(new JLabel("DEGRE: ")); casedeg=new JTextField(3); p2.add(casedeg); p2.add(new JLabel("Valeur de x: ")); casex=new JTextField(3); p2.add(casex); cf.add("center",p2); JPanel p3=new JPanel(); calcul=new JButton("CALCUL"); calcul.addactionlistener(this); p3.add(calcul); p3.add(new JLabel("Resultat :")); caseres=new JTextField(8); p3.add(caseres); cf.add("south",p3); p=pp; public void actionperformed (ActionEvent e){ p.degre=integer.parseint(casedeg.gettext()); p.x=double.parsedouble(casex.gettext()); for (int i=0; i<=p.degre; i++) p.coef[i]=double.parsedouble(casecoef[i].gettext()); p.eval(); caseres.settext(double.tostring(p.res)); //fin de fenetre public class Exercice3 { public static void main (String[] args) {Poly p1=new Poly(); Fenetre f1=new Fenetre(p1); f1.pack();f1.setvisible(true); 30