Вы находитесь на странице: 1из 48

Swing le langage Java

Introduction
Introduction
Java Foundation
Java Foundation
Class et Swing
Class et Swing
XV-1 JMF
Swing le langage Java
Prsentation
Java Foundation Class (JFC) est un ensemble regroupant
des ajouts Java 1.1 qui sont dsormais intgrs au SDK
1.2 et suivants (Java 2 Platform).
JFC comprend :
-les composants Swing. Cest lobjet de ce cours. Ce sont
des composants avancs compltement crits en
langage Java. Trs souvent le code ne fait pas appel aux
composants de la plate-forme.
-Java 2D. Utilisation de classes Graphics 2D amenant des
manipulations complexes de la couleur, la manipulation
simple des transformation affines (rotation, homothtie,
), traitement des textures,
-Laccessibilit : la manipulation simple des ordinateurs
pour les personnes handicaps moteurs
-Le drag and drop : glisser-dposer entre application
quelconque (pas forcment Java) sur une plate-forme.
Lorsque le SDK 1.6 est install, on trouve une
dmonstration de lensemble des composants Swing dans
le rpertoire INSTAL_SDK\demo\jfc\SwingSet2 et
on lance :
java -jar SwingSet2.jar
ou
appletviewer SwingSet2.html
XV-2 JMF
Swing le langage Java
Les classes Swing
Les classes Swing s'appuient sur l'arborescence AWT. Les
principales classes Swing sont :
Component
TextComponent
Button
TextField
Label
Container
Panel Window
Applet
Frame
TextArea
Canvas
List
CheckBox ScrollBar
Dialog
FileDialog
...
...
JComponent
AbstractButton
JButton JToggleButton
JRadioButton
JLabel JPanel
JTextComponent
JFrame
JApplet
JTextArea JTextField
...
Remarques gnrales
En Java 1.2 et suivant, les classes Swing se trouve dans le
paquetage javax.swing et ses sous paquetages. Il est
fortement dconseill de mlanger des composants Swing
et AWT dans une interface graphique.
XV-3 JMF
Swing le langage Java
Les composants "haut niveau"
Les composants dit de haut niveau sont :
-les fentres fille de la fentre fond dcran, objets des
classes JFrame, JWindow, JDialog
-ainsi que les objets de la classe JApplet
De la version Java 1.1 1.4, pour ces objets conteneurs,
on najoute pas leurs contenus directement dans ces objets
(contrairement AWT). On passe par lintermdiaire de
leur ContentPane qui est rcupr par la mthode
getContentPane(). Par exemple :
JFrame maFrame = ;
JButton monJButton= ;
maFrame.getContentPane().add(monJButton,
BorderLayout.NORTH) ;
On se sert aussi du ContentPane pour positionner le
Layout des composants haut niveau de Swing. Par
exemple :
JFrame maFrame = ;
maFrame.getContentPane().setLayout(new BorderLayout());
Depuis la version Java 1.5 et suivants cela n'est plus
ncessaire et on peut directement ajouter les composants
et positionner le Layout d'un conteneur en lanant les
mthodes setLayout() et add() sur ce conteneur
comme en AWT.
XV-4 JMF
Swing le langage Java
Les ajouts Swing
Par rapport AWT, Swing propose des amliorations
notoires sur certains composants (JLabel, JButton, ...,
par rapport Label, Button, ...) et de nouveaux
composants (bulle daide, onglet, ...)
JLabel
On peut construire facilement un JLabel comportant une
image gif ou jpg (accompagn dun texte ou non).
Icon image = new ImageIcon("tarde.jpg");
JLabel labelImage = new JLabel(image);
Le constructeur le plus complet de JLabel est :
public JLabel(String text, Icon
icon,int horizontalAlignment)
et il existe d'autres constructeurs avec des arguments en
moins.
JTabbedPane
Les onglets nexistent pas en AWT. On cre une bote
onglets par le constructeur
public JTabbedPane(int tabPlacement)
qui indique o placer les titres des onglets, ou bien par
public JTabbedPane()
qui par dfaut les placent en haut.
On ajoute les composants (souvent des JPanel) dans la
bote onglets par :
public void addTab(String title, Icon
icon, Component component, String tip)
ou des mthodes de mme nom avec moins dargument.
XV-5 JMF
Swing le langage Java
JLabel et JTabbedPane
Voici un programme qui utilise ces composants :
import java.awt.*;
import java.util.*;
import java.awt.event.*;
import javax.swing.*;
public class TabTest extends JPanel {
private JTabbedPane jtp;
private JLabel labelImage;
private JPanel panneau1 = new JPanel();
private JPanel panneau2 = new JPanel();
private JPanel panneau3 = new JPanel();
XV-6 JMF
Swing le langage Java
public TabTest() {
setLayout(new BorderLayout());
jtp = new JTabbedPane();
Icon image = new ImageIcon("clouds.jpg");
labelImage = new JLabel("label avec texte et
image", image, SwingConstants.CENTER);
panneau1.add(labelImage);
Icon image2 = new ImageIcon("dog.gif");
panneau2.add(new JLabel(image2));
panneau3.add(new JLabel("JLabel avec du texte
seulement"));
jtp.addTab("Image & Texte", panneau1);
jtp.addTab("image seule", panneau2);
jtp.addTab("texte seul", panneau3);
add(jtp, BorderLayout.CENTER);
}
public static void main(String args[]) {
JFrame jf = new JFrame("Tabbed Pane Test");
TabTest tt = new TabTest();
jf.getContentPane().add(tt, BorderLayout.CENTER);
jf.setSize(600,300);
jf.setVisible(true);
}
}
XV-7 JMF
Swing le langage Java
Look and Feel
Swing propose plusieurs aspects et utilisation de
linterface graphique : Look and Feel (L&F).
Le Look and Feel de Swing est appel Metal ou Java L&F
: cest le L&F par dfaut. On peut aussi avoir les L&F
Motif, Windows et Macintosh (contrl par des droits) et
mme se crer son propre L&F.
On peut connatre les divers L&F utilisables sur une
machine laide de la mthode statique
UIManager.getInstalledLookAndFeels();
qui retourne un tableau de
UIManager.LookAndFeelInfo
XV-8 JMF
Swing le langage Java
Look and Feel (suite)
Par exemple le programme :
import javax.swing.*;
public class ListPlafs {
public static void main (String args[]) {
UIManager.LookAndFeelInfo plaf[] =
UIManager.getInstalledLookAndFeels();
for (int i=0, n=plaf.length; i<n; i++) {
System.out.println("Nom : " +
plaf[i].getName());
System.out.println("Nom de la classe : "
+ plaf[i].getClassName());
}
System.exit(0);
}
}
retourne :
Nom : Metal
Nom de la classe :
javax.swing.plaf.metal.MetalLookAndFeel
Nom : CDE/Motif
Nom de la classe :
com.sun.java.swing.plaf.motif.MotifLookAndFeel
Nom : Windows
Nom de la classe :
com.sun.java.swing.plaf.windows.WindowsLookAndFeel
XV-9 JMF
Swing le langage Java
Look and Feel (suite)
On positionne le L&F par la mthode statique
public static void setLookAndFeel(String
className)throws ClassNotFoundException,
InstantiationException,
IllegalAccessException,
UnsupportedLookAndFeelException
de la classe UIManager.
Puis il faut indiquer la racine de larborescence des
composants graphiques de l'interface qui prend en compte
ce L&F par :
SwingUtilities.updateComponentTreeUI(racine);
en gnral cette racine est la fentre principale.
XV-10 JMF
Swing le langage Java
Divers L&F
Les diffrents L&F de la plate-forme Windows
sont obtenus par le programme :
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
/**
* Cette classe illustre le changement dynamique de
L&F
*/
public class LnF extends JPanel {
private JButton jb = new JButton("A Button");
private String [] cbitems = {"One", "Two", "Three"};
private JComboBox jcb = new JComboBox(cbitems);
private JTextField jtf = new JTextField("Hello", 14);
private JRadioButton jrbHost = new
JRadioButton("Windows", false);
private JRadioButton jrbCross = new
JRadioButton("CrossPlatform", true);
private JRadioButton jrbMotif = new
JRadioButton("Motif", false);
private ButtonGroup bg = new ButtonGroup();
XV-11 JMF
Swing le langage Java
public LnF() {
bg.add(jrbHost);
bg.add(jrbCross);
bg.add(jrbMotif);
add(jb);
add(jcb);
add(jtf);
add(jrbHost);
add(jrbCross);
add(jrbMotif);
jrbMotif.addActionListener(
new ActionListener() {
public void actionPerformed(ActionEvent ev) {
// installe le L&F Motif
try {
UIManager.setLookAndFeel(
"com.sun.java.swing.plaf.motif.MotifLookAndFeel"
);
SwingUtilities.updateComponentTreeUI(LnF.this);
} catch (Exception e) {}
}
}
);
XV-12 JMF
Swing le langage Java
jrbHost.addActionListener(
new ActionListener() {
public void actionPerformed(ActionEvent ev) {
// installe le L&F de la plate-forme i.e. Windows
try {
UIManager.setLookAndFeel(
UIManager.getSystemLookAndFeelClassName());
SwingUtilities.updateComponentTreeUI(LnF.this);
} catch (Exception e) {}
}
}
);
jrbCross.addActionListener(
new ActionListener() {
public void actionPerformed(ActionEvent ev) {
// installe le L&F Metal
try {
UIManager.setLookAndFeel(
UIManager.getCrossPlatformLookAndFeelClassName
());
SwingUtilities.updateComponentTreeUI(LnF.this);
} catch (Exception e) { }
}
}
);
}
public static void main(String args[]) {
JFrame jf = new JFrame("LnF");
LnF lnf = new LnF();
jf.getContentPane().add(lnf);
jf.pack();
jf.setVisible(true);
}
}
XV-13 JMF
Swing le langage Java
L&F complments
On peut aussi rcuprer le L&F Metal par la mthode de
statique de la classe UIManager.
public static String
getCrossPlatformLookAndFeelClassName()
et le L&F de la plate-forme par la mthode statique de la
classe UIManager :
public static String
getSystemLookAndFeelClassName()
XV-14 JMF
Swing le langage Java
L'architecture MVC
Swing utilise fondamentalement une architecture
dinterface homme-machine inspir de Smalltalk :
larchitecture Model-View-Controller.
Cette architecture est compose de trois parties :
-le modle qui est la partie dcrivant les donnes
afficher
-la vue qui est la reprsentation graphique de ces donnes
-le contrleur qui est la partie qui traite des interactions du
composant avec lutilisateur.
double valeur = 6.89
Modle Vue
Contrleur
Augmenter Diminuer
XV-15 JMF
Swing le langage Java
Intrts de larchitecture MVC
- meilleure modularit
- possibilit dassocier plusieurs vues distinctes un
mme modle (histogramme, courbes, camembert,
valeur flottante, ...)
- possibilit de changer limplmentation dun modle
(optimisation, rorganisation, ...) sans rien changer aux
vues et aux contrleurs.
XV-16 JMF
Swing le langage Java
Implmenter le modle MVC
On sappuie sur une technique quon retrouve dans
dautres parties du langage Java (JavaBeans, ...) et qui
utilise le mcanisme des vnements par dlgation (Java
1.1 et suivant).
Le modle permet dinscrire des objets qui seront
couteurs de ce modle. Lorsque les donnes changent, le
modle envoie des renseignements sous forme dun objet
vnement ces (ses !!) couteurs en leur demandant
dexcuter une mthode convenue.
Dans le modle MVC, ce sont :
-les contrleurs qui demandent changer une donne du
modle
-les vues qui sont les couteurs du modle, qui sont
averties du changement des donnes.
Pour cela, les vues doivent senregistrer auprs du modle.
Celui-ci possde des mthodes appropries
(addXXXListener()).
XV-17 JMF
Swing le langage Java
Implmenter le modle MVC
(suite)
Les tapes pour construire cette architecture sont :
1) Dfinir une classe vnement qui contiendra les
informations envoyer du modle vers ses vues.
Lvnement qui sera gnr est parfois appel
lvnement source. Le composant graphique manipul
qui dclanchera tout le mcanisme est appel parfois
l"objet source de lvnement".
2) dfinir une mthode convenue que devront lancer les
vues lorsquelles seront informes dun vnement. Mettre
cette mthode dans une interface que devront implmenter
les vues.
XV-18 JMF
Swing le langage Java
Implmenter le modle MVC
(suite)
La classe vnement dfinir est souvent une sous classe
de java.util.EventObject qui contient dj des
mthodes appropries pour cette architecture. Par exemple
retourner lobjet source de lvnement par la mthode :
public Object getSource()
On a donc :
public class XXXEvent extends
java.util.EventObject { ... }
La mthode lancer peut tre de nom quelconque mais les
conventions proposent quelle soit de la forme :
public void nomQuelconque(XXXEvent e)
{...}
De mme il est convenu que cette mthode soit dans une
interface de la forme :
public interface XXXListener {
public void nomQuelconque(XXXEvent e);
}
XV-19 JMF
Swing le langage Java
Implmenter le modle MVC
(suite)
Le modle qui enregistre, retire, diffuse les vnements
aux diffrents listeners, est par convention, un objet d'une
classe comme :
public MonModele {
Vector lesListeners = new Vector() ;
public void addXXXListener(...){ ...}
public void removeXXXListener(...){ ...}
public void fireXXXEvent(...){ ...}
}
Plus prcisment, ces mthodes sont "du style" :
public void addXXXListener(XXXListener l){
lesListener.addElement(l);
}
public void removeXXXListener(XXXListener l){
lesListener.removeElement(l) ;
}
Avertir lensemble des listeners est obtenu par un code
dont la trame est :
public void fireXXXEvent(Info i){
XXXEvent evt = new XXXEvent(this, i);
/* this est le modele */
Enumeration e = lesListeners.elements() ;
while (e.hasMoreElements()){
((XXXListener)e.nextElement()).nomQuelconque(evt) ;
}
XV-20 JMF
Swing le langage Java
Remarques sur MVC
En pratique, ce ne sont pas les vues qui sont des listeners
mais des classes internes aux vues (des classes
XXXDataListener) ou parfois des classes anonymes.
Les modles sont souvent dfinis partir dune interface
Java. Puis une classe gnrale est donne pour avoir un
modle gnrique. Le programmeur implmente son
propre modle en drivant de cette classe gnrique.
Parfois il ny a pas de classe gnrique et le programmeur
implmente directement linterface. Les vues et les
contrleurs manipulent les interfaces de ces modles.
Ainsi les vues et les contrleurs ne sont pas lis un
modle particulier mais un ensemble de modles qui
implmentent le mme interface.
Ces mcanismes tant classiques en Java (cf. JavaBeans),
il existe des classes et interfaces toutes dans le paquetage
java.beans qui donnent ce genre de code :
-PropertyChangeEvent (classe qui hrite de
java.util.EventObject),
-PropertyChangeListener (interface qui dfinit
une mthode lancer par les listeners lors dun
changement de la valeur dune proprit )
-PropertyChangeSupport (classe dont il faut hriter
proposant les enregistrements, les retraits des listeners
et le lancement de la mthode dfinie dans
PropertyChangeListener).
XV-21 JMF
Swing le langage Java
Les composants Swing et MVC
On va tudier les composants avancs de Swing :
JList, JTable, JTree. Certains de ces composants
sont assez riches pour occuper eux seuls un ou plusieurs
paquetages !! Cest le cas avec les paquetages
javax.swing.table et javax.swing.tree.
Les composants JList et JTable utilisent une
arborescence de classes et dinterfaces de la forme :
-public interface XXXModel {}
-public abtract class AbstractXXXModel
implements XXXModel, Serializable
-public class DefaultXXXModel extends
AbstractXXXModel { }
o XXX vaut List ou Table.
Les JXXX sont des vues. Pour les construire on utilise
souvent les constructeurs JXXX(leModele).
XV-22 JMF
Swing le langage Java
Cellules
Les lments dune JTable ainsi que les nuds dun
JTree sont appels des cellules (cell). Ces cellules sont
similaires aux lments dun JList ou dune
JComboBox et sont dessines par des renderer . Ce
renderer est une machine (factory) pour fabriquer des
Component insrer dans les cellules.
En fait lobjet construit est un Component ou plutt un
objet dune sous classe, par dfaut un JLabel construit
partir de la chane String obtenue en ayant lanc la
mthode toString() sur la cellule.
Ainsi les composants JXXX affichent des Component.
XV-23 JMF
Swing le langage Java
Le composant JList
Une JList modlise, comme une java.awt.List,
une liste. Contrairement une List, une JList na pas
de barre de dfilement par dfaut. Aussi on met souvent
une JList dans une JScrollPane :
JList maJList = ;
JScrollPane maJSP = new JScrollPane(maJlist);
JList utilise larborescence : interface ListModel
implmente par la classe abstraite
AbstractListModel dont drive la classe concrte
DefaultListModel.
Linterface ListModel
contient le minimum de dclarations de mthodes.
Ce quil faut pour grer des vues (listener dvnements)
public void
addListDataListener(ListDataListener l);
et
public void
removeListDataListener(ListDataListener l) ;
Rcuprer un lment donn dans la liste ainsi que le
nombre dlments de cette liste :
public Object getElementAt(int index);
public int getSize();
XV-24 JMF
Swing le langage Java
Le composant JList (suite)
La classe AbstractListModel
Cette classe abstraite donne un corps pour les mthodes de
traitement des vnements ci dessus
add/remove...Listener() et fire().
La classe DefaultListModel
Cette classe concrte donne une implantation dun modle
de liste laide de Vector ainsi que des mthodes de
gestion de liste associes.
XV-25 JMF
Swing le langage Java
JList (suite)
Le code habituel quon crit est :
- construire une classe concrte modle de liste partir de
la classe DefaultListModel qui implante
beaucoup de fonctionnalits ncessaires pour les listes.
- construite une JList laide de ce modle.
import java.awt.*;
import java.awt.event.*;
import java.util.*;
import javax.swing.*;
public class EssaiJList {
// declaration du tableau de donnees
private static String [] data = {
"Et un", "Et deux", "Et trois", "Zro" };
public static void main(String args[]) {
JFrame jf1 = new JFrame("Essai JList");
DefaultListModel dlm = new DefaultListModel();
// remplir le modele de donnees
for (int i = 0; i < data.length; i++)
dlm.addElement(data[i]);
JList jl1 = new JList(dlm) ;
jf1.getContentPane().add(jl1,
BorderLayout.CENTER);
// Crer un controleur et le mettre dans l'IHM
jf1.getContentPane().add(new ListController(dlm),
BorderLayout.SOUTH);
jf1.pack();
jf1.setVisible(true); }
}
XV-26 JMF
Swing le langage Java
Le Contrleur
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
/**
* Cette classe est un JTextField qui est un
* contrleur pour un modle de liste.
* Il ajoute des items ce modle
* lorsque l'utilisateur appuie sur " Enter ".
*/
public class ListController extends JTextField {
private final DefaultListModel model;
public ListController(DefaultListModel lm) {
model = lm;
// Ce controleur est son propre ActionListener
// Lorsque l'utilisateur appuie sur Entrer,
// la chaine (String) est ajoutee au modle de JList.
// Ceci est effectue par une classe anonyme
// qui implemente l'interface ActionListener.
addActionListener(
new ActionListener() {
public void actionPerformed(ActionEvent ev)
{
// On utilise la methode getActionCommand()
// de l'ActionEvent
// pour recuperer le texte du JTextField
// et l'ajoute au modele. getText() fonctionne aussi
model.addElement(ev.getActionCommand()) ;
}
}
);
}
}
XV-27 JMF
Swing le langage Java
Le composant JTable
JTable modlise un tableau cest dire une structure
prsentant des lignes et des colonnes, bref l'interface
graphique d'un tableur. Les cellules de ce tableur sont des
Component.
Cest un composant avanc et beaucoup de classes dont il
dpend sont dans le paquetage javax.swing.table.
En gnral on met une JTable dans une
JScrollPane. Si ce nest pas le cas, les en-ttes des
colonnes napparaissent pas.
Les donnes dun JTable sont dans le modle
javax.swing.table.TableModel. Plus
prcisment, on a larchitecture :
-public interface TableModel {}
-public abtract class
AbstractTableModel implements
TableModel, Serializable
-public class DefaultTableModel extends
AbstractTableModel { }
Voici un exemple crant une JTable de 10 lignes et 10
colonnes dInteger.
TableModel dataModel = new AbstractTableModel() {
public int getColumnCount() { return 10; }
public int getRowCount() { return 10;}
public Object getValueAt(int row, int col) { return new
Integer(row*col); }
};
JTable table = new JTable(dataModel);
JScrollPane scrollpane = new JScrollPane(table);
XV-28 JMF
Swing le langage Java
Les colonnes dans une JTable
On dispose aussi dun modle pour les colonnes, spcifi
par linterface TableColumnModel implment par la
classe concrte DefaultTableColumnModel qui
indique le nombre de colonnes, les colonnes elles mmes,
propose le mode de slection (une seule cellule, une seule
ligne ou colonnes, plusieurs lignes ou colonnes contigus
ou pas).
Les colonnes sont repres par des indices commenant
0 ou des noms. Elles sont types i.e. les cellules sont des
objets de classe. Le renderer par dfaut fabrique un
JLabel partir de cet objet sur lequel a t lanc la
mthode toString(). Les cellules dune mme
colonne doivent tre des objets dune mme classe ou de
classes sous classes dune classe commune.
XV-29 JMF
Swing le langage Java
Linterface TableModel
Cette interface contient les dclarations et indique la
smantique des mthodes que doivent implanter un
modle de JTable.
Ce quil faut pour grer des listener dvnements lorsque
le modle change.
public void
add/removeTableModelListener(ListDataListene
r l) ;
Class getColumnClass(int columnIndex)
qui retourne la classe de base commune tous les
lments de la colonne.
int getColumnCount() (resp int getRowCount())
retourne le nombre de colonnes (resp de lignes) de lobjet
String getColumnName(int columnIndex) retourne
le nom de la colonne dindice columnIndex
Object getValueAt(int rowIndex, int
columnIndex) retourne lobjet de la cellule (rowIndex,
columnIndex)
boolean isCellEditable(int rowIndex, int
columnIndex) retourne true si la cellule indique est
ditable par lutilisateur.
void setValueAt(Object aValue, int rowIndex,
int columnIndex) positionne lobjet de la cellule
(rowIndex, columnIndex)
XV-30 JMF
Swing le langage Java
La classe
DefaultTableModel
propose plusieurs constructeurs pour crer un modle de
table.
DefaultTableModel()
DefaultTableModel(int numRows, int
numColumns)
DefaultTableModel(Object[][] data,
Object[] columnNames)
DefaultTableModel(Vector columnNames,
int numRows)
DefaultTableModel(Vector data, Vector
columnNames)
Construction dune table revisit
public class MonTableModel extends DefaultTableModel {
public MonTableModel() {
}
public MonTableModel(Object [ ][ ] data, Object [ ] headings) {
super(data, headings);
}
}
puis
Object [ ][ ] donnees = {
{"Pierre", Boolean.FALSE},
{"Paul", Boolean.FALSE},
{"Jacques", Boolean.TRUE}
};
String [ ] enTete = {
"Nom", "Est Inscrit ?"
};
MonTableModel dtm = new MonTableModel(donnees, enTete);
JTable jt = new JTable(dtm);
JScrollPane jsp = new JScrollPane(jt);
XV-31 JMF
Swing le langage Java
Mode daffichage des cellules
Par dfaut les cellules sont des JLabel qui affichent le
texte provenant de la mthode toString() de lobjet
de la cellule.
Si lobjet est de classe Boolean, la cellule est une
JCheckBox.
On peut changer ce comportement en dfinissant son
propre CellRenderer.
XV-32 JMF
Swing le langage Java
Le composant JTree
modlise une arborescence.
utilise linterface TreeModel et la classe
DefaultTreeModel (il ny a pas de
AbstractTreeModel).
Construire un arbre
On dfinit tout dabord les nuds comme instance de la
classe DefaultMutableTreeNode. En gnral on
utilise le constructeur :
public DefaultMutableTreeNode(Object
userObject, boolean allowsChildren) qui
cre un nud sans parent et sans enfant, initialis avec
lobjet indiqu. Si allowsChildren vaut false ce
nud restera une feuille.
Par la suite, lorsque tous les nuds ont t crs comme
objet DefaultMutableTreeNode, ils sont assembls
pour construire un arbre laide de la mthode add() de
DefaultMutableTreeNode et larbre final est
construit laide de JTree(TreeNode root).
XV-33 JMF
Swing le langage Java
Exemple de JTree
Pour faire afficher :

il suffit d'crire :
import java.awt.*;
import javax.swing.*;
import javax.swing.tree.*;
public class TreeTest {
private static Object [ ] nodeNames = { "one", "two",
"three", "four", "five", "six", "seven",
new Integer(8), new Integer(9), new Float(10) };
private static boolean [ ] leaf = { false, true, true,
false, true, true, false, true, true, true };
public static void main(String args[]) {
JFrame jf = new JFrame("Tree Test");
DefaultMutableTreeNode [ ] nodes = new
DefaultMutableTreeNode[10];
for (int i = 0; i < nodes.length; i++) {
nodes[i] = new
DefaultMutableTreeNode(nodeNames[i], !leaf[i]);
}
XV-34 JMF
Swing le langage Java
nodes[0].add(nodes[1]);
nodes[0].add(nodes[2]);
nodes[0].add(nodes[3]);
nodes[0].add(nodes[6]);
nodes[0].add(nodes[9]);
nodes[3].add(nodes[4]);
nodes[3].add(nodes[5]);
nodes[6].add(nodes[7]);
nodes[6].add(nodes[8]);
JTree jt = new JTree(nodes[0]);
jf.getContentPane().add(jt, BorderLayout.CENTER);
jf.pack();
jf.setVisible(true);
}
}
XV-35 JMF
Swing le langage Java
Linterface TreeModel
Les principales manipulations pour un arbre sont dj
dclares dans cette interface.
On trouve :
void
add/removeTreeModelListener(TreeModelLi
stener l)
Object getChild(Object parent, int
index) retourne le indexime fils de parent.
int getChildCount(Object parent)
int getIndexOfChild(Object parent,
Object child)
Object getRoot()
boolean isLeaf(Object node)
XV-36 JMF
Swing le langage Java
Les composants Swing pour le
texte
Swing propose 5 classes pour traiter le texte. Ces classes
drivent de la classe JTextComponent (qui drive de
JComponent).
Deux de ces classes remplacent les quivalents AWT :
JTextField et JTextArea. Swing propose une classe
pour des entres masques : JPasswordField.
Dans ces 3 classes, laffichage du texte est constitu dune
seule police et dune seule couleur.
XV-37 JMF
Swing le langage Java
Les composants Swing pour le
texte
Il existe deux autres classes pour le traitement avanc de
texte .
JEditorPane est un traitement de texte pouvant
afficher du texte format avec de nombreux attributs
(diffrentes couleurs, polices, soulign, gras, ...).
JTextPane permet de dfinir sa propre grammaire de
documents et ses styles associs alors que
JTextEditor est spcialis pour les textes de types
MIME text/plain, text/html, text/rtf.
Dans ces deux classes, les donnes peuvent tre des
Component Swing ou des images.
XV-38 JMF
Swing le langage Java
Le composant JTextPane
Ce composant permet dditer du texte format :
diffrentes polices, styles, couleurs, .... Un tel texte est
appel un document.
Plus prcisment un JTextPane peut contenir des
images (Icon) ou des Component Swing.
La plupart des classes et interfaces utilises se trouve dans
le paquetage javax.swing.text.
Cette classe drive de JEditorPane qui contient des
fonctionnalits avances : affichage de texte HTML ou rtf.
Le modle associ un JTextPane est linterface
StyledDocument (i.e. document contenant des styles)
implant par la classe concrte
DefaultStyledDocument.
Un JTextPane peut contenir des Component.
XV-39 JMF
Swing le langage Java
Les styles
Un style est un ensemble dattributs appliquer une
partie dun document. Lensemble des styles dun
document est un StyleContext.
Les styles sont hirarchiss et un style sur une suite de
caractres crase le style sur le paragraphe o se trouve
ces caractres.
La hirarchie des interfaces pour la manipulation des
styles est : AttributeSet ->
MutableAttributeSet -> Style.
Un style est cr grce la mthode addStyle() de la
classe StyleContext. Finalement StyleContext
est la fois une fabrique (factory) et un conteneur de
styles.
Le contenu des styles est construit laide des mthodes
statiques (setBold(), setFontFamily(), ...) de la
classe StyleConstants.
StyleContext sc = new StyleContext() ;
// on cree un style de base
Style normal = sc.addStyle(Normal, null) ;
// un style driv du style de base
Style titre = sc.addStyle(Titre, normal) ;
// On dfinit le contenu de chaque style :
StyleConstants.setFontSize(titre, 32) ;
StyleConstants.setBold(titre, true) ;

XV-40 JMF
Swing le langage Java
diteur Swing qui affiche de
lHTML
import javax.swing.*;
import java.awt.*;
import java.io.*;
public class EditorPaneSample {
public static void main(String args[]) throws
IOException {
JFrame frame = new JFrame("EditorPane HTML");
Container content = frame.getContentPane();
JEditorPane editor = new
JEditorPane("file:///JeanMarc/Java/index.html");
editor.setEditable(false);
JScrollPane scrollPane = new JScrollPane(editor);
content.add(scrollPane);
frame.setSize(640, 480);
frame.setVisible(true);
}
}
XV-41 JMF
Swing le langage Java
Le Copier/Couper/Coller
En fait cela ne fait pas partie de Swing mais des JFC.
Java permet de manipuler le presse papier (ClipBoard) de
la machine et de faire ainsi des "Copier/Couper/Coller"
entre une application quelconque et un programme Java
condition que la donne transfre "convienne" pour les 2
programmes.
Le "type" de cette donne transfrer est un ensemble de
type MIME et est reprsent par des objets de la classe
java.awt.datatransfer.DataFlavor.
XV-42 JMF
Swing le langage Java
Dposer dans le presse papier
Il suffit :
- de rcuprer le presse papier par :
Clipboard c =
getToolkit().getSystemClipboard();
lancer sur un Component.
- crer un objet obj d'une classe implmentant l'interface
Transferable : ce sera la donne dposer dans le
presse-papier.
- dposer la donne dans le presse papier par :
c.setContents(obj, proprietairePP).
proprietairePP est dsormais le propritaire du
presse papier. C'est un objet d'une classe qui implmente
l'interface ClipboardOwner. Cet objet sera inform
que le presse papier a chang de propritaire (i.e. une
autre application a dpos une donne dans le presse-
papier) par le lancement de la mthode
public void lostOwnership(Clipboard c,
Transferable t) qui est dclare dans l'interface
ClipboardOwner.
XV-43 JMF
Swing le langage Java
Rcuprer du presse papier
Il suffit :
- de rcuprer le presse papier par :
Clipboard c =
getToolkit().getSystemClipboard();
lancer sur un Component.
- de rcuprer la donne du presse papier par:
Transferable t = c.getContents(this);
(le paramtre de cette mthode n'est pas utilis pour
l'instant).
- rcuprer les diffrents types possibles (DataFlavor)
pour la donne du presse papier par
t.getTransferDataFlavors().
On obtient un tableau flavors[ ] et, de ce tableau, on
peut avoir la donne pour chaque DataFlavor par :
Object o =
t.getTransferData(flavors[i]).
XV-44 JMF
Swing le langage Java
Programme
Copier/Couper/Coller
import java.awt.*;
import java.awt.event.*;
import java.awt.datatransfer.*;
import java.io.*;
import javax.swing.*;
public class Clip extends JPanel implements
ClipboardOwner {
JTextArea text = new JTextArea();
JButton cutButton = new JButton("Cut");
JButton copyButton = new JButton("Copy");
JButton pasteButton = new JButton("Paste");
public Clip() {
setLayout(new BorderLayout());
JScrollPane jsp = new JScrollPane(text);
add(jsp, BorderLayout.CENTER);
add(cutButton, BorderLayout.NORTH);
add(copyButton, BorderLayout.EAST);
add(pasteButton, BorderLayout.SOUTH);
XV-45 JMF
Swing le langage Java
pasteButton.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e) {
System.out.println("Paste!");
Clipboard c = getToolkit().getSystemClipboard();
Transferable t = c.getContents(this);
DataFlavor [] flavors = t.getTransferDataFlavors();
for (int i = 0; i < flavors.length; i++) {
try {
Object o = t.getTransferData(flavors[i]);
System.out.println("Flavor " + i + " gives " +
o.getClass().getName());
if (o instanceof String) {
text.insert((String)o, text.getCaretPosition());
}
} catch (Exception ex) { ex.printStackTrace();
}
}
}
});
cutButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
System.out.println("Cut!");
Clipboard c = getToolkit().getSystemClipboard();
StringSelection ss = new
StringSelection(text.getSelectedText());
text.replaceRange("", text.getSelectionStart(),
text.getSelectionEnd());
c.setContents(ss, Clip.this);
}
});
XV-46 JMF
Swing le langage Java
copyButton.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e) {
System.out.println("Copy!");
Clipboard c = getToolkit().getSystemClipboard();
StringSelection ss = new
StringSelection(text.getSelectedText());
c.setContents(ss, Clip.this);
}
});
}
public void lostOwnership(Clipboard c, Transferable
t) {
System.out.println("Lost clipboard");
}
public static void main(String args[]) {
JFrame f = new JFrame("Clipboard Test");
Clip c = new Clip();
f.getContentPane().add(c, BorderLayout.CENTER);
f.setSize(300, 200);
f.setVisible(true);
}
}
XV-47 JMF
Swing le langage Java
Bibliographie
John Zukowskis Definition Guide to Swing for Java 2 ;
John Zukowski ed Apress ISBN 1-893115-02-X
Tutorial Swing en ligne :
http://java.sun.com/docs/books/tutorial/uisw
ing/index.html
XV-48 JMF

Вам также может понравиться

  • Programmer en Java
    Programmer en Java
    От Everand
    Programmer en Java
    Рейтинг: 5 из 5 звезд
    5/5 (4)
  • Théorie Des Organisations 2
    Théorie Des Organisations 2
    Документ10 страниц
    Théorie Des Organisations 2
    Cecile Spykiline
    Оценок пока нет
  • Travaux Diriges
    Travaux Diriges
    Документ32 страницы
    Travaux Diriges
    tarik outal
    Оценок пока нет
  • Livret Etudiant
    Livret Etudiant
    Документ68 страниц
    Livret Etudiant
    Cecile Spykiline
    Оценок пока нет
  • Chap 1 - Interface Graphique Et Événements - V 2023
    Chap 1 - Interface Graphique Et Événements - V 2023
    Документ47 страниц
    Chap 1 - Interface Graphique Et Événements - V 2023
    Oumaima Ziat
    Оценок пока нет
  • BUSINESS PLAN FASO BIO SA (F CFA) Du 16 - 02-2020 BID
    BUSINESS PLAN FASO BIO SA (F CFA) Du 16 - 02-2020 BID
    Документ35 страниц
    BUSINESS PLAN FASO BIO SA (F CFA) Du 16 - 02-2020 BID
    GNOUMOU Théodore Hièvo
    100% (6)
  • Rapport Marketing Industriel Sur Tesla
    Rapport Marketing Industriel Sur Tesla
    Документ32 страницы
    Rapport Marketing Industriel Sur Tesla
    Akrame Jbilou
    100% (1)
  • Java Swing
    Java Swing
    Документ39 страниц
    Java Swing
    idriss
    Оценок пока нет
  • Java Interfaces SWING
    Java Interfaces SWING
    Документ41 страница
    Java Interfaces SWING
    Alouani Kacem
    Оценок пока нет
  • Le Langage Java Swing
    Le Langage Java Swing
    Документ58 страниц
    Le Langage Java Swing
    oudet9977
    Оценок пока нет
  • Formation Continue 2016 Gestion Et Organisation D Entreprise
    Formation Continue 2016 Gestion Et Organisation D Entreprise
    Документ100 страниц
    Formation Continue 2016 Gestion Et Organisation D Entreprise
    Cecile Spykiline
    Оценок пока нет
  • Cours Java
    Cours Java
    Документ102 страницы
    Cours Java
    mohasade
    Оценок пока нет
  • Guide Admin Securisee Si Anssi Pa 022 v2
    Guide Admin Securisee Si Anssi Pa 022 v2
    Документ68 страниц
    Guide Admin Securisee Si Anssi Pa 022 v2
    christian
    Оценок пока нет
  • 2023 02 BP Fevrier
    2023 02 BP Fevrier
    Документ1 страница
    2023 02 BP Fevrier
    Aziz Fall
    Оценок пока нет
  • Feuilletage 280 PDF
    Feuilletage 280 PDF
    Документ51 страница
    Feuilletage 280 PDF
    lahcen
    Оценок пока нет
  • Swing
    Swing
    Документ33 страницы
    Swing
    Karim Karim
    Оценок пока нет
  • Swing Résumé 1
    Swing Résumé 1
    Документ23 страницы
    Swing Résumé 1
    leila
    100% (2)
  • Java FX Partie3
    Java FX Partie3
    Документ36 страниц
    Java FX Partie3
    ÄnÂss FîQhî
    100% (1)
  • Chrono Thermostat Equation PDF
    Chrono Thermostat Equation PDF
    Документ6 страниц
    Chrono Thermostat Equation PDF
    wolfdeniro
    Оценок пока нет
  • Interface Graphique GUI Java
    Interface Graphique GUI Java
    Документ35 страниц
    Interface Graphique GUI Java
    abdoulsany
    Оценок пока нет
  • Chapitre10-Interfaces Graphiques
    Chapitre10-Interfaces Graphiques
    Документ35 страниц
    Chapitre10-Interfaces Graphiques
    mounaim
    Оценок пока нет
  • Swing
    Swing
    Документ6 страниц
    Swing
    Ferdinand Atta
    Оценок пока нет
  • Introduction Aux Interfaces Graphiques e PDF
    Introduction Aux Interfaces Graphiques e PDF
    Документ24 страницы
    Introduction Aux Interfaces Graphiques e PDF
    wilane
    Оценок пока нет
  • Chapitre10 Interfaces Graphiques
    Chapitre10 Interfaces Graphiques
    Документ35 страниц
    Chapitre10 Interfaces Graphiques
    zayd
    Оценок пока нет
  • Tpe Inf 213
    Tpe Inf 213
    Документ19 страниц
    Tpe Inf 213
    Fonsa Aderou
    Оценок пока нет
  • 2015 Intellij Idea GUI
    2015 Intellij Idea GUI
    Документ13 страниц
    2015 Intellij Idea GUI
    gildas sari
    Оценок пока нет
  • Java TP
    Java TP
    Документ41 страница
    Java TP
    Lalaina Rakotoasimbola
    Оценок пока нет
  • Mme Khadija Bouzaachane
    Mme Khadija Bouzaachane
    Документ81 страница
    Mme Khadija Bouzaachane
    Mohammed Tesjale
    Оценок пока нет
  • Java Swing
    Java Swing
    Документ11 страниц
    Java Swing
    Kingashley Warren Markus
    Оценок пока нет
  • Interfaces Graphiques
    Interfaces Graphiques
    Документ8 страниц
    Interfaces Graphiques
    Stéphane Miango
    Оценок пока нет
  • Java
    Java
    Документ211 страниц
    Java
    Nabil
    Оценок пока нет
  • Leçon 3
    Leçon 3
    Документ16 страниц
    Leçon 3
    Astucesfree tuto
    Оценок пока нет
  • TP Ihm
    TP Ihm
    Документ72 страницы
    TP Ihm
    zineb.guettache0206
    Оценок пока нет
  • TP1 Ihm
    TP1 Ihm
    Документ40 страниц
    TP1 Ihm
    Fà Tî Mâ
    Оценок пока нет
  • Correction TP4 Graphique Javafx
    Correction TP4 Graphique Javafx
    Документ5 страниц
    Correction TP4 Graphique Javafx
    Brahim Ben Saada
    Оценок пока нет
  • Chap IV PPTP - Toolkit Graphique - Java Swing - Composants Atomiques
    Chap IV PPTP - Toolkit Graphique - Java Swing - Composants Atomiques
    Документ29 страниц
    Chap IV PPTP - Toolkit Graphique - Java Swing - Composants Atomiques
    Mohamed Selmani
    Оценок пока нет
  • TD3 Applets
    TD3 Applets
    Документ6 страниц
    TD3 Applets
    Jameson Moise
    Оценок пока нет
  • Cours Java 3
    Cours Java 3
    Документ55 страниц
    Cours Java 3
    Dimitri Pireyre
    Оценок пока нет
  • Développons en Java - Le Développement D'interfaces Graphiques Avec SWING
    Développons en Java - Le Développement D'interfaces Graphiques Avec SWING
    Документ67 страниц
    Développons en Java - Le Développement D'interfaces Graphiques Avec SWING
    ben
    Оценок пока нет
  • td2T p2
    td2T p2
    Документ7 страниц
    td2T p2
    ومضة
    Оценок пока нет
  • Programmation evenementielle [java] - Partie 1 (-video) (3)
    Programmation evenementielle [java] - Partie 1 (-video) (3)
    Документ17 страниц
    Programmation evenementielle [java] - Partie 1 (-video) (3)
    kolala.patok
    Оценок пока нет
  • Cours Java SWING
    Cours Java SWING
    Документ65 страниц
    Cours Java SWING
    mouhamed amine
    Оценок пока нет
  • TP1 Problématique Et Enjeux
    TP1 Problématique Et Enjeux
    Документ5 страниц
    TP1 Problématique Et Enjeux
    khaled19lmd
    Оценок пока нет
  • Swing 1.2 - V. Etudiants
    Swing 1.2 - V. Etudiants
    Документ102 страницы
    Swing 1.2 - V. Etudiants
    yassine karouani
    Оценок пока нет
  • Module 11 Swings GUI
    Module 11 Swings GUI
    Документ70 страниц
    Module 11 Swings GUI
    Armel Téfack
    Оценок пока нет
  • Swing
    Swing
    Документ38 страниц
    Swing
    lolo TV
    Оценок пока нет
  • Java Partie8 GUI
    Java Partie8 GUI
    Документ78 страниц
    Java Partie8 GUI
    Wael Habboubi
    Оценок пока нет
  • 8 Java p1
    8 Java p1
    Документ77 страниц
    8 Java p1
    Fadwa Zed
    Оценок пока нет
  • Interfaces Graphiques
    Interfaces Graphiques
    Документ42 страницы
    Interfaces Graphiques
    Abdallah Ab
    Оценок пока нет
  • Architectures Javafx Et Concepts de Base
    Architectures Javafx Et Concepts de Base
    Документ22 страницы
    Architectures Javafx Et Concepts de Base
    Jean Kerby Milon
    Оценок пока нет
  • Java Swing
    Java Swing
    Документ25 страниц
    Java Swing
    imadbenmadi891
    Оценок пока нет
  • 04 Awt Swing
    04 Awt Swing
    Документ83 страницы
    04 Awt Swing
    Chafik Berdjouh
    Оценок пока нет
  • En Once TP Android
    En Once TP Android
    Документ10 страниц
    En Once TP Android
    Younes Younes
    Оценок пока нет
  • enonceTPAndroid
    enonceTPAndroid
    Документ7 страниц
    enonceTPAndroid
    a.freelancer.e
    Оценок пока нет
  • TP1-Création Des Interfaces Graphiques Avec Java SWING: Module: IHM - Interface Homme Machine
    TP1-Création Des Interfaces Graphiques Avec Java SWING: Module: IHM - Interface Homme Machine
    Документ12 страниц
    TP1-Création Des Interfaces Graphiques Avec Java SWING: Module: IHM - Interface Homme Machine
    jbjkhvnj
    Оценок пока нет
  • Introduction À Java
    Introduction À Java
    Документ14 страниц
    Introduction À Java
    Mary Drd
    Оценок пока нет
  • TP 04: Créez Votre Première Fenêtre: L'Objet Jframe
    TP 04: Créez Votre Première Fenêtre: L'Objet Jframe
    Документ15 страниц
    TP 04: Créez Votre Première Fenêtre: L'Objet Jframe
    Alouani Kacem
    Оценок пока нет
  • Les Évènements en JavaFX
    Les Évènements en JavaFX
    Документ10 страниц
    Les Évènements en JavaFX
    ismaelsoulama2004
    Оценок пока нет
  • Cours2 javaFX Rosemont
    Cours2 javaFX Rosemont
    Документ22 страницы
    Cours2 javaFX Rosemont
    dfsfd
    Оценок пока нет
  • Chap4-La Programmation Graphique PDF
    Chap4-La Programmation Graphique PDF
    Документ23 страницы
    Chap4-La Programmation Graphique PDF
    Anouar Belabbes
    Оценок пока нет
  • TP3 Jpa 2018
    TP3 Jpa 2018
    Документ12 страниц
    TP3 Jpa 2018
    Salomon Lomos
    Оценок пока нет
  • Cours11 GUI
    Cours11 GUI
    Документ94 страницы
    Cours11 GUI
    Ayman Khlif
    Оценок пока нет
  • Cours Javafx1
    Cours Javafx1
    Документ55 страниц
    Cours Javafx1
    oussema
    Оценок пока нет
  • SPRING
    SPRING
    Документ8 страниц
    SPRING
    Fatiha Ait Bourhou
    Оценок пока нет
  • TP5 Java2
    TP5 Java2
    Документ2 страницы
    TP5 Java2
    rehouma
    Оценок пока нет
  • Cours JEE 4
    Cours JEE 4
    Документ27 страниц
    Cours JEE 4
    Dorsaf Ben Alaya
    Оценок пока нет
  • TD Poa PDF
    TD Poa PDF
    Документ5 страниц
    TD Poa PDF
    Bocar Thiedel Diallo
    Оценок пока нет
  • TP Java
    TP Java
    Документ16 страниц
    TP Java
    Salma Gharssouan
    100% (1)
  • NFA031 Chapitre 03 ProgrammeJava
    NFA031 Chapitre 03 ProgrammeJava
    Документ14 страниц
    NFA031 Chapitre 03 ProgrammeJava
    Ciss
    Оценок пока нет
  • TD Java 1
    TD Java 1
    Документ14 страниц
    TD Java 1
    Hamza Nair
    Оценок пока нет
  • Postgresql 9 0
    Postgresql 9 0
    Документ37 страниц
    Postgresql 9 0
    Martin Brait
    Оценок пока нет
  • Projet
    Projet
    Документ7 страниц
    Projet
    Cecile Spykiline
    Оценок пока нет
  • Cours Architecture Ordinateur Viennet
    Cours Architecture Ordinateur Viennet
    Документ108 страниц
    Cours Architecture Ordinateur Viennet
    api-3706108
    100% (4)
  • 065
    065
    Документ2 страницы
    065
    Cecile Spykiline
    Оценок пока нет
  • Quinté
    Quinté
    Документ2 страницы
    Quinté
    Cecile Spykiline
    Оценок пока нет
  • Theoriedesorganisations1 PDF
    Theoriedesorganisations1 PDF
    Документ10 страниц
    Theoriedesorganisations1 PDF
    Cecile Spykiline
    Оценок пока нет
  • Examen de Langue
    Examen de Langue
    Документ2 страницы
    Examen de Langue
    Cecile Spykiline
    Оценок пока нет
  • Examen
    Examen
    Документ6 страниц
    Examen
    Cecile Spykiline
    Оценок пока нет
  • Comment Installer Java JDK Sur Son Ordinateur 2013
    Comment Installer Java JDK Sur Son Ordinateur 2013
    Документ8 страниц
    Comment Installer Java JDK Sur Son Ordinateur 2013
    Cecile Spykiline
    Оценок пока нет
  • Polys C MM
    Polys C MM
    Документ50 страниц
    Polys C MM
    Midou Machakil Est
    100% (1)
  • 014 - Architecture N-Tiers
    014 - Architecture N-Tiers
    Документ17 страниц
    014 - Architecture N-Tiers
    Aissa Ka
    Оценок пока нет
  • Cours de Chimie en T
    Cours de Chimie en T
    Документ23 страницы
    Cours de Chimie en T
    Cecile Spykiline
    100% (1)
  • Ecole Normale Session 2012
    Ecole Normale Session 2012
    Документ2 страницы
    Ecole Normale Session 2012
    Cecile Spykiline
    Оценок пока нет
  • 014 - Architecture N-Tiers
    014 - Architecture N-Tiers
    Документ17 страниц
    014 - Architecture N-Tiers
    Aissa Ka
    Оценок пока нет
  • BAC A 2005 Math
    BAC A 2005 Math
    Документ8 страниц
    BAC A 2005 Math
    Cecile Spykiline
    Оценок пока нет
  • Comment Installer Java JDK Sur Son Ordinateur 2013
    Comment Installer Java JDK Sur Son Ordinateur 2013
    Документ8 страниц
    Comment Installer Java JDK Sur Son Ordinateur 2013
    Cecile Spykiline
    Оценок пока нет
  • PolyExoC MM
    PolyExoC MM
    Документ62 страницы
    PolyExoC MM
    Léa Sorel
    Оценок пока нет
  • Maths
    Maths
    Документ2 страницы
    Maths
    Cecile Spykiline
    Оценок пока нет
  • Epreuve
    Epreuve
    Документ2 страницы
    Epreuve
    Cecile Spykiline
    Оценок пока нет
  • SVT
    SVT
    Документ9 страниц
    SVT
    Cecile Spykiline
    Оценок пока нет
  • Examen de Langue
    Examen de Langue
    Документ2 страницы
    Examen de Langue
    Cecile Spykiline
    Оценок пока нет
  • Rapport
    Rapport
    Документ2 страницы
    Rapport
    Cecile Spykiline
    Оценок пока нет
  • Examen de Langue
    Examen de Langue
    Документ2 страницы
    Examen de Langue
    Cecile Spykiline
    Оценок пока нет
  • Polytechnique
    Polytechnique
    Документ2 страницы
    Polytechnique
    Cecile Spykiline
    Оценок пока нет
  • Examen
    Examen
    Документ5 страниц
    Examen
    Cecile Spykiline
    Оценок пока нет
  • Examen
    Examen
    Документ4 страницы
    Examen
    Cecile Spykiline
    Оценок пока нет
  • Droit Fiscal l2 Aes Viola
    Droit Fiscal l2 Aes Viola
    Документ51 страница
    Droit Fiscal l2 Aes Viola
    berskolatino
    Оценок пока нет
  • Rappaort-Définitif CGES LOGORC 23 - 03-2022-1
    Rappaort-Définitif CGES LOGORC 23 - 03-2022-1
    Документ165 страниц
    Rappaort-Définitif CGES LOGORC 23 - 03-2022-1
    Cédric Mbeula
    Оценок пока нет
  • Avenant N°3 SNCT
    Avenant N°3 SNCT
    Документ4 страницы
    Avenant N°3 SNCT
    Imen Zardoum
    Оценок пока нет
  • Info 4e Seq3
    Info 4e Seq3
    Документ2 страницы
    Info 4e Seq3
    Armand
    Оценок пока нет
  • Effets de Commerce
    Effets de Commerce
    Документ10 страниц
    Effets de Commerce
    Rochdi El Barqui
    Оценок пока нет
  • Formation Continue-Qhse: Ffre de Formations Nebosh Igc, Nebosh Itc, Nebosh Award Et Iosh M/S en Algérie
    Formation Continue-Qhse: Ffre de Formations Nebosh Igc, Nebosh Itc, Nebosh Award Et Iosh M/S en Algérie
    Документ10 страниц
    Formation Continue-Qhse: Ffre de Formations Nebosh Igc, Nebosh Itc, Nebosh Award Et Iosh M/S en Algérie
    Technique EGSA
    100% (1)
  • B 1
    B 1
    Документ27 страниц
    B 1
    Missoum Kabo
    Оценок пока нет
  • Base Mémoire
    Base Mémoire
    Документ6 страниц
    Base Mémoire
    hugo.rosselin95
    Оценок пока нет
  • LPP14 Puissance Electrique Prof PDF
    LPP14 Puissance Electrique Prof PDF
    Документ4 страницы
    LPP14 Puissance Electrique Prof PDF
    Hakim Abdelhakim Nabil
    Оценок пока нет
  • These Abdellatif BERKAT
    These Abdellatif BERKAT
    Документ180 страниц
    These Abdellatif BERKAT
    maamria
    Оценок пока нет
  • Examen Session Ordinaire Comportement Du Consommateur 2019-2020
    Examen Session Ordinaire Comportement Du Consommateur 2019-2020
    Документ3 страницы
    Examen Session Ordinaire Comportement Du Consommateur 2019-2020
    Anas Bouchikhi
    Оценок пока нет
  • Dent Ial: WWW - Vinafix.vn
    Dent Ial: WWW - Vinafix.vn
    Документ44 страницы
    Dent Ial: WWW - Vinafix.vn
    Rogeriotabira
    Оценок пока нет
  • Schaeffler Ou de Delong
    Schaeffler Ou de Delong
    Документ8 страниц
    Schaeffler Ou de Delong
    Ramzi Guetari
    100% (1)
  • tp1 Enrichie 2018
    tp1 Enrichie 2018
    Документ5 страниц
    tp1 Enrichie 2018
    Rania Benamara
    Оценок пока нет
  • Note de Calcul Reservoir Circulaire - 500M3 PDF
    Note de Calcul Reservoir Circulaire - 500M3 PDF
    Документ21 страница
    Note de Calcul Reservoir Circulaire - 500M3 PDF
    Hsan Saadaoui
    Оценок пока нет
  • DP 900T00A FR AssessmentGuide
    DP 900T00A FR AssessmentGuide
    Документ25 страниц
    DP 900T00A FR AssessmentGuide
    Ruben Dario Pinzón Eraso
    Оценок пока нет
  • Log710 Ete2011 Rtos
    Log710 Ete2011 Rtos
    Документ25 страниц
    Log710 Ete2011 Rtos
    Mabrouk Adouane
    Оценок пока нет
  • Presentation Du Controle Interne - DRSSFD
    Presentation Du Controle Interne - DRSSFD
    Документ25 страниц
    Presentation Du Controle Interne - DRSSFD
    ZAHUI AIME BLEGBOH
    Оценок пока нет
  • 528 Em27122011
    528 Em27122011
    Документ22 страницы
    528 Em27122011
    elmoudjahid_dz
    Оценок пока нет
  • La Motorisation D'un Portail À Verrin
    La Motorisation D'un Portail À Verrin
    Документ6 страниц
    La Motorisation D'un Portail À Verrin
    zarkader
    Оценок пока нет
  • QSP-revue 112012
    QSP-revue 112012
    Документ69 страниц
    QSP-revue 112012
    Olivier Ernst
    Оценок пока нет
  • M0087MPTCF11
    M0087MPTCF11
    Документ89 страниц
    M0087MPTCF11
    Aiman Khemakhem
    Оценок пока нет
  • Notice AVIDSEN YLVA 2 ALLOTELECOMMANDE - Compressed
    Notice AVIDSEN YLVA 2 ALLOTELECOMMANDE - Compressed
    Документ20 страниц
    Notice AVIDSEN YLVA 2 ALLOTELECOMMANDE - Compressed
    Nabil Live
    Оценок пока нет
  • TPN1
    TPN1
    Документ14 страниц
    TPN1
    riadh hassnaoui
    Оценок пока нет