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

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

Swing et les Interfaces Graphiques

Présentations similaires


Présentation au sujet: "Swing et les Interfaces Graphiques"— Transcription de la présentation:

1 Swing et les Interfaces Graphiques
1er novembre 2004 Swing et Interfaces Graphiques - Demoulin Yann - DESS RSI

2 Swing et Interfaces Graphiques - Demoulin Yann - DESS RSI
Plan Introduction Le Package Swing (Liste exhaustive) Utilisation des Composants Les Événements Les Interfaces Graphiques Les différents langages Les Apparences « LookAndFeel » Exemple d’application Swing Javax.Swing est apparu en standard dans JDK à partir de Java 2 (JDK 1.2 et plus) Nous allons voir tout d’abord les groupes de classes que nous trouvons dans le Package Javax, puis les groupes de classes que nous pouvons trouver dans le Package Javax.swing. Nous allons ensuite voir les différents composants que nous avons dans le package Swing, puis voir comment on les utilise avec un exemple. Nous allons ensuite voir comment nous pouvons ajouter un événement à un composant. Enfin, nous verrons les Interfaces graphiques en général et les apparences que nous pouvons avoir dans java. 1er novembre 2004 Swing et Interfaces Graphiques - Demoulin Yann - DESS RSI

3 Swing et Interfaces Graphiques - Demoulin Yann - DESS RSI
Introduction Les Packages de JDK Le Package javax Le Sous Package javax.swing Dans le langage Java, il existe différentes librairies standard livrées avec le package Java JDK. Parmi ces différentes librairies, nous trouvons, entre autres, la librairie Javax.Swing qui n’est autre qu’une sorte de capsule regroupant différentes classes de base pour reproduire des boutons, des boites combo, des barres de progression, des champs de texte et d’autres objets que nous verrons plus tard. Grâce ces classes nous pouvons alors ajouter des boutons et d’autres composants classiques que l’on retrouve dans les interfaces graphiques courantes. Ainsi, nous pouvons ajouter à un objet de type JFrame (qui est le cadre principal de l’application) n’importe quel élément swing dont nous avons besoin pour réaliser l’application qu’un client nous aura demandé. Nous avons également la possibilité d’associer un événement à chaque objet swing que nous ajoutons à notre application graphique. La gestion de tous ces objets est très facile grâce aux différentes applications que nous trouvons dans le commerce comme JBuilder qui est payant ou sur le net Eclipse qui est gratuit. Mais la facilité engendre parfois une mauvaise syntaxe visuelle, mais qui reste efficace au niveau de l’exécution. 1er novembre 2004 Swing et Interfaces Graphiques - Demoulin Yann - DESS RSI

4 Les Packages Standard de JDK 1.4
audio COM & com fonts images java java2d Javax launcher models netscape org sounds sun sunw templates 1er novembre 2004 Swing et Interfaces Graphiques - Demoulin Yann - DESS RSI

5 Swing et Interfaces Graphiques - Demoulin Yann - DESS RSI
Le Package javax Le Package javax fut inclus dans JDK à partir de la version 1.2 (Java 2) Dans ce package, nous trouvons différents sous packages: accessibility crypto imageio naming net print rmi security sound sql swing transaction xml Les nombreux paquets javax sont des extensions du langage Java de base. Ils comprennent des paquets comme javax.swing, javax.sound, javax.rmi, javax.transactions et javax.naming. Les développeurs peuvent aussi créer leurs propres paquets javax personnalisés. Pour les principaux sous packages: Le package javax.accessibility définit un contrat entre les composants de l'interface utilisateur et une technologie d’assistance qui fournissent l'accès à ces composants. Le package javax.naming fournit les classes et interfaces pour accéder à des services de naming. Le package javax.rmi contient des APIs de l'utilisateur pour RMI-IIOP. Le package javax.swing fournit un ensemble de composants dit “poids léger” qui, au degrés maximum possible, travail de façon identique sur toutes les plateformes. Le package javax.transaction fournit l’API qui définit le contrat entre la transaction manager et plusieurs parties impliqués dans une transaction distribuée à savoir: le manager de la ressource, l’application, et le serveur d’application. 1er novembre 2004 Swing et Interfaces Graphiques - Demoulin Yann - DESS RSI

6 Swing et Interfaces Graphiques - Demoulin Yann - DESS RSI
Le Package Swing javax.swing Composants Basiques Composants Textes Menus, Bar d’outils et ToolTips Containers javax.swing.beaninfo javax.swing.beaninfo.images javax.swing.border javax.swing.colorchooser javax.swing.event javax.swing.filechooser javax.swing.plaf javax.swing.plaf.basic javax.swing.plaf.metal javax.swing.plaf.multi javax.swing.table javax.swing.text javax.swing.text.html javax.swing.tree javax.swing.undo Il existe de nombreux composants susceptibles d’intervenir dans une application graphique. Certains sont des conteneurs, c’est à dire qu’ils sont destinés à contenir d’autres composants; c’est notamment le cas des fenêtres (JFrame) et des panneaux(JPanel). JApplet JAppletBeanInfo JButton JButtonBeanInfo JCheckBox JCheckBoxBeanInfo JCheckBoxMenuItem JCheckBoxMenuItemBeanInfo JColorChooser JColorChooserBeanInfo JComboBox JComboBoxBeanInfo JComponent JComponentBeanInfo JDesktopPane JDialog JDialogBeanInfo JEditorPane JEditorPaneBeanInfo JFileChooser JFileChooserBeanInfo JFormattedTextField JFormattedTextFieldBeanInfo JFrame JFrameBeanInfo JInternalFrame JInternalFrameBeanInfo JLabel JLabelBeanInfo JLayeredPane JList JListBeanInfo JMenu JMenuBar JMenuBarBeanInfo JMenuBeanInfo JMenuItem JMenuItemBeanInfo JOptionPane JOptionPaneBeanInfo JPanel JPanelBeanInfo JPasswordField JPasswordFieldBeanInfo JPopupMenu JPopupMenuBeanInfo JProgressBar JProgressBarBeanInfo JRadioButton JRadioButtonBeanInfo JRadioButtonMenuItem JRadioButtonMenuItemBeanInfo JRootPane JScrollBar JScrollBarBeanInfo JScrollPane JScrollPaneBeanInfo JSeparator JSeparatorBeanInfo JSlider JSliderBeanInfo JSpinner JSpinnerBeanInfo JSplitPane JSplitPaneBeanInfo JTabbedPane JTabbedPaneBeanInfo JTable JTableBeanInfo JTextArea JTextAreaBeanInfo JTextField JTextFieldBeanInfo JTextPane JTextPaneBeanInfo JToggleButton JToggleButtonBeanInfo JToolBar JToolBarBeanInfo JToolTip JTree JTreeBeanInfo JViewport JWindow JWindowBeanInfo 1er novembre 2004 Swing et Interfaces Graphiques - Demoulin Yann - DESS RSI

7 Swing et Interfaces Graphiques - Demoulin Yann - DESS RSI
Les Composants Swing Composants Basiques JApplet JButton JCheckBox JRadioButton JToggleButton JComboBox JList JSlider JTable JTree JProgessBar JSpinner Nous pouvons voir dans cette exemple les composants dit basiques. Voici donc un bouton de type JButton (en haut à gauche) Voici deux JRadioButton regroupés dans un ButtonGroup, pour avoir un seul élément sélectionné sur les deux. Voici un bouton interrupteur de type JToggleButton Voici un JCheckBox Voici un JComboBox Voici un JList, un JSlider, un JTable et un JTree 1er novembre 2004 Swing et Interfaces Graphiques - Demoulin Yann - DESS RSI

8 Swing et Interfaces Graphiques - Demoulin Yann - DESS RSI
Les Composants Swing Menus, Bar d’outils et ToolTips JMenuBar JMenu JMenuItem JCheckBoxMenuItem JRadioButtonMenuItem JPopupMenu JToolBar JToolTip 1er novembre 2004 Swing et Interfaces Graphiques - Demoulin Yann - DESS RSI

9 Swing et Interfaces Graphiques - Demoulin Yann - DESS RSI
Les Composants Swing Composants Textes JPasswordField JTextField JTextArea JTextPane JEditorPane Un JPasswordField nous permet de saisir un mot de passe de façon sécurisée Un JTextField nous permet de saisir une chaîne de caractère sur une seule ligne 1er novembre 2004 Swing et Interfaces Graphiques - Demoulin Yann - DESS RSI

10 Swing et Interfaces Graphiques - Demoulin Yann - DESS RSI
Les Composants Texte JTextField JPasswordField JTextArea JEditorPane JTextPane JTextComponent Légende Texte Stylisé Texte Ordinaire Texte Simple Ligne Texte Multi Ligne Les composants textes que nous venons de voir précédemment peuvent être regroupés dans différentes catégories. Ces catégories sont les zones de texte à simple lignes, les zones de texte à plusieurs lignes, les zones de texte dit ordinaire et les zone de texte stylisé. 1er novembre 2004 Swing et Interfaces Graphiques - Demoulin Yann - DESS RSI

11 Swing et Interfaces Graphiques - Demoulin Yann - DESS RSI
Les Composants Swing Containers JOptionPane JDialog JTabbedPane JSplitPane JScrollPane JFrame JInternalFrame JDesktopPane JWindow Tout les composants de cette vignette sont très simple à comprendre, leur fonctionnement reste aisé sauf les trois derniers. La classe JDesktopPane, nous permet de mettre en place une fenêtre active pour avoir plusieurs fenêtre de type JInternalFrame à l’intérieur. Ce type d’objet nous permet donc d’avoir une fenêtre avec plusieurs image par exemple comme PaintShopPro ou PhotoElement. Les containers ont une particularité, ils permettent de placer des objets à l’intérieur. Ainsi ces objets ont la caractéristique « layout » pour placer les objets simples de façon aisé (voir la vignette suivante). 1er novembre 2004 Swing et Interfaces Graphiques - Demoulin Yann - DESS RSI

12 Layout et les containers
Pour positionner un composant, nous avons plusieurs positions prédéfinis. Ces positions qui sont proposés par Java sont: BorderLayout BoxLayout CardLayout FlowLayout GridBagLayout GridLayout Dans l’ordre les plus utilisés au moins: BorderLayout place les objets dans le conteneur suivant les coté de celui-ci (Nord, sud, est, ouest) FlowLayout place les objets dans le conteneur en ligne à la suite l’un de l’autre CardLayout place les objets dans le conteneur en pile à la suite l’un de l’autre GridLayout place les objets dans le conteneur suivant une grille spécifiée lors de la déclaration du layout Exemple: Conteneur.setLayout (new GridLayout (6,4)); // 6 lignes, 4 colonnes Conteneur.setLayout (new GridLayout (6,4,15,10)); // 6 lignes, 4 colonnes, intervalle horizontal de 15, intervalle vertical de 10 BoxLayout place les objets suivant une ligne ou une colonne GridBagLayout place les objets suivant une grille, mais ceux-ci peuvent occuper plusieurs cellules, avec des contraintes sur les cellules 1er novembre 2004 Swing et Interfaces Graphiques - Demoulin Yann - DESS RSI

13 Les Caractéristiques d’un JComponent
La plupart des composants Swing descendent de JComponent qui hérite de Container Caractéristiques d’un JComponent Bordure Méthode setBorder(titledBorder1) pour spécifier une bordure autour du composant. Avec titledBorder1 = new TitledBorder( BorderFactory.createEtchedBorder( Color.white,new Color( 156, 156, 158 ) ),"Radio Group"); Double-buffering 2 mémoires d’affichages existent : celle que l’on voit et celle où les composants Swing sont en train d’être dessinés. Évite le clignotement du tracé. setDoubleBuffered(false) permet de l’enlever Tool tips setToolTipText spécifie l’affichage d’un message d’aide lorsque le curseur est sur un objet Navigation au clavier registerKeyboardAction autorise l’usage du clavier en plus de la souris pour manoeuvrer 1er novembre 2004 Swing et Interfaces Graphiques - Demoulin Yann - DESS RSI

14 Les Caractéristiques d’un JComponent
Propriétés putProperty associe une propriété au composant Style chaque composant a un pluggable LookAndFeel permettant au UIManager.setLookAndFeel global de fonctionner Placement contrôlé par setPreferredSize, setMinimumSize, setMaximumSize, setAlignmentX, et setAlignmentY Accessibilité pour les technologies d’assistance Localisation permet des comportements différents en fonction du pays, de la langue, etc. 1er novembre 2004 Swing et Interfaces Graphiques - Demoulin Yann - DESS RSI

15 Utilisation des Composants Swing
Structure de base d’une application graphiques en Java. Le principe est le même lorsque nous voulons réaliser un applet. Il suffit de remplacer l’héritage JFrame par Applet. 1er novembre 2004 Swing et Interfaces Graphiques - Demoulin Yann - DESS RSI

16 Déclaration des Composants
public class Cadre extends JFrame { JButton jButton1 = new JButton(); JButton jButton2 = new JButton(); JTree jTree1 = new JTree(); JTextField jTextField1 = new JTextField(); JPanel contentPane; JPanel jPanel1 = new JPanel(); JScrollPane jScrollPane1 = new JScrollPane(); BorderLayout borderLayout1 = new BorderLayout(); Pour avoir une application graphique, nous devons créer des composants à insérer dans notre fenêtre. Cette fenêtre est une classe que nous définissons nous même et que nous implémentons. Cette nouvelle classe hérite de la classe JFrame. Nous déclarons donc les différents objets dont nous avons besoin pour permettre à l’application de fonctionner suivant le cahier des charges. Ici nous avons donc deux boutons, un objet arbre, une zone de saisie de texte, des conteneur d’objets et un objet particulier nous permettant de placer les objet de façon automatique. 1er novembre 2004 Swing et Interfaces Graphiques - Demoulin Yann - DESS RSI

17 Initialisation des Composants
private void Initialization() throws Exception { this.setSize(new Dimension(400, 300)); this.setTitle("Titre du cadre"); contentPane = (JPanel) this.getContentPane(); contentPane.setLayout(null); jButton1.setBounds(new Rectangle(23, 60, 102, 32)); jButton1.setText("jButton1"); jButton2.setBounds(new Rectangle(23, 104, 102, 32)); jButton2.setText("jButton2"); jPanel1.setBorder(BorderFactory.createEtchedBorder()); jPanel1.setBounds(new Rectangle(141, 35, 234, 215)); jPanel1.setLayout(borderLayout1); jTextField1.setText("jTextField1"); Nous devons à présent initialiser les objets afin de les placer où nous le souhaitons. Puis dans le constructeur de notre classe, nous ferrons appel à la fonction d’initialisation. 1er novembre 2004 Swing et Interfaces Graphiques - Demoulin Yann - DESS RSI

18 Initialisation des Composants
contentPane.add(jButton1, null); contentPane.add(jButton2, null); contentPane.add(jPanel1, null); jPanel1.add(jScrollPane1, BorderLayout.CENTER); jPanel1.add(jTextField1, BorderLayout.NORTH); jScrollPane1.getViewport().add(jTree1, null); } Enfin, toujours dans la fonction d’initialisation, nous ajoutons aux conteneurs d’objets les objets de base que nous avons initialisé précédemment. Ce qui nous donne une application basique dont nous avons l’exemple en prise de vue. Si nous souhaitons ajouter d’autres objets, il suffit de faire la même chose avec les composants que nous avons vu précédemment (Dans la partie « Les Composants Swing »). 1er novembre 2004 Swing et Interfaces Graphiques - Demoulin Yann - DESS RSI

19 Swing et Interfaces Graphiques - Demoulin Yann - DESS RSI
Les Événements Nous allons voir comment nous pouvons ajouter un événement à un bouton afin d’effectuer la fonction souhaitée lorsque l’on clique dessus. Nous allons donc voir un exemple pour créer un menu et affecter au bouton quitter du menu fichier l’action nécessaire pour terminer le processus. Pour avoir un menu et avoir un bouton quitter, nous ajoutons alors les éléments suivants à la classe JFrame : La barre de Menu de l’application JMenuBar jMenuBar1 = new JMenuBar(); Le Menu Fichier JMenu jMenuFile = new JMenu(); Le bouton Quitter JMenuItem jMenuQuitter = new JMenuItem(); Il est possible d’affecter un évènement à un objet Swing grâce à des classes spéciales appelées listeners. Ces classes nous permettent d’écouter les actions effectuées sur un objet swing et de lancer la fonction adéquat à l’action produite. Les deux classes abstraites principales qui nous permettent l’écoute sont la classe java.awt.event.MouseMotionAdapter et la classe java.awt.event.ActionListener. Pour nous permettre d’associer un événement à un objet, il suffit d’ajouter un listener à l’objet swing que l’on veut. Ainsi si ObjSwing est un objet Swing alors nous ajoutons le listener ainsi : ObjSwing.addActionListener(new jButton1_actionAdapter(this)); Où la classe jButton1_actionAdapter est une classe que nous avons créée qui hérite de l’une des deux classes abstraites grâce au mot clé extends. Et this étant le cadre de notre application. 1er novembre 2004 Swing et Interfaces Graphiques - Demoulin Yann - DESS RSI

20 Swing et Interfaces Graphiques - Demoulin Yann - DESS RSI
Les Événements Dans la méthode d’initialisation de la classe, nous ajoutons ce qui suit pour: Ajouter la barre de menu à l’application this.setJMenuBar(jMenuBar1); Ajouter le Menu Fichier à la barre de menu jMenuFile.setText("Fichier"); jMenuBar1.add(jMenuFile); Ajouter le bouton au menu fichier et de son listener jMenuQuitter.setText("Quitter"); jMenuQuitter.addActionListener(new Cadre1_jMenuQuitter_actionAdapter(this)); jMenuFile.add(jMenuQuitter); Méthode associée au bouton Quitter public void jMenuFileExit_actionPerformed(ActionEvent e) { System.exit(0); } 1er novembre 2004 Swing et Interfaces Graphiques - Demoulin Yann - DESS RSI

21 Swing et Interfaces Graphiques - Demoulin Yann - DESS RSI
Les Événements A présent, nous devons ajouter un événement à notre bouton nous avons besoin de définir une classe particulière qui fera appel à la méthode que nous aurons choisi. Dans notre exemple cette méthode s’appelle jMenuFileExit_actionPerformed(actionEvent) qui est déclarée dans notre classe JFrame. class Cadre1_jMenuQuitter_actionAdapter implements java.awt.event.ActionListener { Cadre1 adaptee; Cadre1_jMenuQuitter_actionAdapter(Cadre1 adaptee) this.adaptee = adaptee; } public void actionPerformed(ActionEvent e) adaptee.jMenuFileExit_actionPerformed(e); A présent, nous devons ajouter un événement à notre bouton nous avons besoin de définir une classe particulière qui fera appel à la méthode qui nous aurons choisi. Dans notre exemple cette méthode s’appelle jMenuFileExit_actionPerformed(actionEvent) qui est déclarée dans notre classe JFrame. 1er novembre 2004 Swing et Interfaces Graphiques - Demoulin Yann - DESS RSI

22 Les Interfaces graphiques
Il faut savoir que différents langages peuvent nous permettre de créer des interfaces graphiques. Nous pouvons avoir le C++, le Pascal avec Delphi mais encore Java que nous voyons depuis le début de cet exposé. La différence entre Java et les autres langages de programmation, est que nous pouvons lancer une application Java, qui a été au préalable compilée sur une plateforme quelconque, sur n’importe quelle machine à partir du moment où cette machine possède une machine virtuelle (ou JVM pour Java Virtual Machine). Pour plus de faciliter afin de créer ce genre d’application, il est conseillé d’utiliser un éditeur de code Java comme JBuilder que nous préférerons mais payant en version complète ou encore Eclipse qui lui est gratuit mais moins convivial. 1er novembre 2004 Swing et Interfaces Graphiques - Demoulin Yann - DESS RSI

23 Les Apparences LookAndFeel
Grâce à java, nous avons la possibilité de choisir l’apparence. Pour changer l’aspect de l’application, il suffit de mettre ce qui suit dans la méthode main. Pour choisir l’apparence de la plateforme où la machine virtuelle est lancée UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); Pour choisir l’apparence Motif UIManager.setLookAndFeel("com.sun.java.swing.plaf.motif.MotifLookAndFeel"); Pour choisir l’apparence Metal UIManager.setLookAndFeel("javax.swing.plaf.metal.MetalLookAndFeel"); Pour choisir l’apparence Windows UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel"); 1er novembre 2004 Swing et Interfaces Graphiques - Demoulin Yann - DESS RSI

24 Les Apparences « LookAndFeel » Windows
1er novembre 2004 Swing et Interfaces Graphiques - Demoulin Yann - DESS RSI

25 Les Apparences « LookAndFeel » Métal (Par Défaut)
1er novembre 2004 Swing et Interfaces Graphiques - Demoulin Yann - DESS RSI

26 Les Apparences « LookAndFeel » Motif
1er novembre 2004 Swing et Interfaces Graphiques - Demoulin Yann - DESS RSI

27 Swing et Interfaces Graphiques - Demoulin Yann - DESS RSI
Bibliographie Informations sur le Net (Google) Programmer en Java - Claude Delannoy - Ed. Eyrolles Aide Borland JBuilder 1er novembre 2004 Swing et Interfaces Graphiques - Demoulin Yann - DESS RSI


Télécharger ppt "Swing et les Interfaces Graphiques"

Présentations similaires


Annonces Google