Document 7805482

Download Report

Transcript Document 7805482

Swing et les Interfaces
Graphiques
1er novembre 2004
Swing et Interfaces Graphiques Demoulin Yann - DESS RSI
1
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
1er novembre 2004
Swing et Interfaces Graphiques Demoulin Yann - DESS RSI
2
Introduction
Les Packages de JDK
Le Package javax
Le Sous Package javax.swing
1er novembre 2004
Swing et Interfaces Graphiques Demoulin Yann - DESS RSI
3
Les Packages Standard de JDK
1.4
audio
COM & com
fonts
images
java
java2d
Javax
launcher
1er novembre 2004
models
netscape
org
sounds
sun
sunw
templates
Swing et Interfaces Graphiques Demoulin Yann - DESS RSI
4
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
1er novembre 2004
Swing et Interfaces Graphiques Demoulin Yann - DESS RSI
5
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
1er novembre 2004
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
Swing et Interfaces Graphiques Demoulin Yann - DESS RSI
6
Les Composants Swing
Composants Basiques












JApplet
JButton
JCheckBox
JRadioButton
JToggleButton
JComboBox
JList
JSlider
JTable
JTree
JProgessBar
JSpinner
1er novembre 2004
Swing et Interfaces Graphiques Demoulin Yann - DESS RSI
7
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
8
Les Composants Swing
Composants Textes





JPasswordField
JTextField
JTextArea
JTextPane
JEditorPane
1er novembre 2004
Swing et Interfaces Graphiques Demoulin Yann - DESS RSI
9
Les Composants Texte
JTextComponent
Légende
Texte Simple Ligne
Texte Multi Ligne
JTextField
JTextArea
JEditorPane
Texte Ordinaire
JPasswordField
JTextPane
Texte Stylisé
1er novembre 2004
Swing et Interfaces Graphiques Demoulin Yann - DESS RSI
10
Les Composants Swing
Containers









JOptionPane
JDialog
JTabbedPane
JSplitPane
JScrollPane
JFrame
JInternalFrame
JDesktopPane
JWindow
1er novembre 2004
Swing et Interfaces Graphiques Demoulin Yann - DESS RSI
11
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
1er novembre 2004
Swing et Interfaces Graphiques Demoulin Yann - DESS RSI
12
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
13
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
14
Utilisation des Composants Swing
JFrame
JPanel (ContentPane)
JButton
JButton
JPanel
JTextField
JScrollPane
JList
1er novembre 2004
Swing et Interfaces Graphiques Demoulin Yann - DESS RSI
15
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();
1er novembre 2004
Swing et Interfaces Graphiques Demoulin Yann - DESS RSI
16
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");
1er novembre 2004
Swing et Interfaces Graphiques Demoulin Yann - DESS RSI
17
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);
}
1er novembre 2004
Swing et Interfaces Graphiques Demoulin Yann - DESS RSI
18
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();
1er novembre 2004
Swing et Interfaces Graphiques Demoulin Yann - DESS RSI
19
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
20
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);
}
}
1er novembre 2004
Swing et Interfaces Graphiques Demoulin Yann - DESS RSI
21
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
22
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
23
Les Apparences « LookAndFeel »
Windows
1er novembre 2004
Swing et Interfaces Graphiques Demoulin Yann - DESS RSI
24
Les Apparences « LookAndFeel »
Métal (Par Défaut)
1er novembre 2004
Swing et Interfaces Graphiques Demoulin Yann - DESS RSI
25
Les Apparences « LookAndFeel »
Motif
1er novembre 2004
Swing et Interfaces Graphiques Demoulin Yann - DESS RSI
26
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
27