0% ont trouvé ce document utile (0 vote)
42 vues8 pages

TP6

Transféré par

hamidmaataoui71
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
42 vues8 pages

TP6

Transféré par

hamidmaataoui71
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF ou lisez en ligne sur Scribd
Faculté des Sciences de Rabat Interface Homme Machine Université Mohammed V de Rabat ‘Année Universitaire 2019/2020 ye Département Informatique SMI-S6 TP6 Conteneurs intermédiaires ‘Swing propose plusieurs conteneurs intermédiaires, le but d'un conteneur intermédiaire est de faciliter le positionnement du composant que contienne "application. Il existe plusieurs types de conteneurs intermédiaires, comme le panel (Classe JPanel), les panneaux de défilements (classe JScrollPane), les panneaux a onglets (classe JTabbedPane), etc... Conteneur - JPanel JPanel est un conteneur générique qui permet de contenir d'autres composants dont d'autres JPanel. Son gestionnaire de placement par défaut est FlowLayout. L'exemple suivant permet de voir comment utiliser un conteneur intermédiaire de type JPanel class Adresse extends JPanel { public Adresse() { super (); JLabel eNom = new JLabel("Nom : "); JLabel ePrenom = new JLabel("Prénom : "); JLabel eAdresse = new JLabel("Adresse : "); JTextField tNom = new JTextField (8) ; JTextField tPrenom = new JTextField(8) ; JTextArea tAdresse = new JTextArea("Lahoucine", 4, 20); add (eNom) ; add (tNom) ; add (ePrenom) ; add (tPrenom) ; add (eAdresse) ; add (tAdresse) ; Me } public class JPanelExemple { public static void main(String[] args) { JFrame cadre = new JFrame(); Adresse identite = new Adresse() ; [Link](identite); // ou [Link](identite) ; cadre. pack () ; cadre. setDefaultCloseOperation (3) ; cadre. setTitle("Identité") ; cadre. setVisible(true) ; ) , © Compilez puis exécutez ce programme. Professeur Lahoucine BALLIHI Faculté des Sciences de Rabat Interface Homme Machine Université Mohammed V de Rabat ‘Année Universitaire 2019/2020 ye Département Informatique SMI-S6 Conteneur - JScrollPane Un JScrollPane est un conteneur qui offre des ascenseurs, il permet de visionner un composant plus grand que lui comme par exemple insertion d'une photo a haute résolution dans une étiquette (probleme que nous avons rencontré dans le TP précédent), L'exemple suivant permet de voir comment utiliser un conteneur intermédiaire de type JScrollPane public class JScrollPaneExemple { public JScrollPaneExemple() { JFrame cadre = new JFrame() ; Jhabel eImage = new JLabel (new Tmagelcon(" . /img/nimage. JPG") ) ; JScrol1Pane pDefilement = new JScrol1Pane (eImage) ; cadre. setContentPane(pDefilement) ; // ou [Link] (pDefilement) ; cadre. setTitle("Le chemin par Google Map !"); cadre. setSize(400, 400) ; cadre. setDefaultClosedperation (3) ; cadre. setResizable(faise); // true laisse 1a possibilite de // redimensionnement cadre. setVisible (true) ; ye public static void main(String[] args) { new JScrol1PaneExemple() ; } ) ‘© Compilez pnis exécutez ce programme Conteneur - JSplitPane Un JSplitPane est un panel coupé en deux par une barre de séparation, cette séparation peut étre horizontale ou verticale. Un JSplitPane accueil deux composants. L’exemple suivant illustre comment utiliser un conteneur intermédiaire de type JSplitPane. public class JsplitPaneExemple { public JSplitPaneExemple() { JPrane cadre = new JFrame() ; Uhabel eInage = new JLabel (new InageIcon("". /img/[Link]")) ; JTextarea ta = new JTextArea(texte, 20, 10); [Link](true); // passage automatique a la ligne JSplitPane pSeparation = new ‘JsplitPane (JSplitPane HORIZONTAL SPLIT, ta, eImage) ; 7/ ow VERTICAL SPLIT cadre. setContentPane (pSeparation) ; // ou [Link](pSeparation) ; cadre. setTitle("Le chemin par Google Map !"); cadre pack () cadre. setDefaultClosedperation (3) ; cadre setResizable(true); // autoriser le redimensionnenent cadre. setVisible (true) ; ) static String texte = "Il ne faut pas se fier aveuglément a la Professeur Lahoucine BALLIHI Faculté des Sciences de Rabat Interface Homme Machine Université Mohammed V de Rabat Année Universitaire 2019/2020 w Département Informatique SMI-S6 technologie. Un chauffeur qui a été guidé par la géolocalisation de Google ! public static void main(String[] args) { new JsplitPaneExemple () ; ) } ‘© Compilez puis exécutez ce programme Conteneur - JTabbedPane Le JTabbedPane est un conteneur qui contient d'autres conteneurs; la navigation entre ces différents conteneurs se faisant par des onglets. Les onglets de navigation peuvent étre positionnés & gauche, en haut, a droite ou en bas. Voici un exemple de JTabbedPane avec deux onglets identité et études. public class JTabbedPaneExemplel { public JTabbedPaneExemplel() { JFrame cadre = new JFrame(); JTabbedPane pOnglets = new JTabbedPane (JTabbedPane. TOP) ; /Ipar défaut JLabel nom = new JLabel(" Nom : "); JTextField tNom = new JTextField(10) ; JLabel prenom = new JLabel(" Prénom : "); JTextField tPrenom = new JTextField(10) ; JPanel identite = new JPanel(); identi [Link] (nom) ; [Link](tNom) ; identi te. add (prenom) ; identi [Link](tPrenom) ; [Link](" Identité ", identite); // ajout d'un ler panneau JLabel niveau = new JLabel(" Niveau : "); JTextField tNiveau = new JTextField(10) ; JLabel annee = new JLabel(" Année : " JTextField tAnnee = new JTextField (10) JPanel etudes = new JPanel(); etudes add (niveau) ; etudes add (tNiveau) ; etudes . add (anne) ; etudes add (tAnnee) ; [Link](" Etudes ", etudes) ; // ajout d'un 2éme panneau cadre. add (ponglets) [Link]("Saisie d'informations") ; [Link](); // 1a taille depend du plus grand onglet cadre. setDefaultCloseOperation (3) ; cadre. setResizable (false) ; 7/ bloquer le changement de la taille cadre. setVisible (true) ; } public static void main(String[] args) { new JTabbedPaneExemplel () ; ] Professeur Lahoucine BALLIHI Faculté des Sciences de Rabat Interface Homme Machine Université Mohammed V de Rabat Année Universitaire 2019/2020 w Département Informatique SMI-S6 ilez puis exécutez ce programme. ‘* Voici un autre exemple de JTabbedPane avec quatre onglets dont chaque onglet contient une image. public class JTabbedPaneExemple2 { public JTabbedPaneExemple2() { JFrame cadre = new JFrame (); JTabbedPane pOnglets = new JTabbedPane () ; JLabel eImagel = new JLabel(new ImageIcon("./img/[Link] ")); JPanel imagel = new JPanel(); image .add(eImagel) ; [Link](" Photo 1", imagel) ; Label elmage2 = new JLabel(new ImageIcon("./img/[Link] ")); panel image2 = new JPanel () ; image? add (eImage2) ; [Link](" Photo 2", image2) ; JLabel eImage3 = new JLabel(new ImageIcon("./img/[Link] ")); JPanel image3 = new JPanel (); image3 . add (eImage3) ; [Link](" Photo 3 ", image3) ; JLabel eImage4 = new JLabel(new ImageTcon("./img/[Link] ")); JPanel image4 = new JPanel (); imaged .add(eImage4) ; [Link](" Photo 4", image4) ; cadre. setContentPane (pOnglets) ; cadre. setTitle ("Album photos") ; [Link] () ; cadre. setDefaultCloseOperation (3) ; cadre. setResizable (true) ; cadre. setVisible (true) ; M ) © Compilez puis exécutez ce programme. Conteneur — JToolBar JToolBar est un conteneur intermédiaire qui permet de réaliser une barre d'outils contenant les actions les plus utilisées d'une application. L'utilisateur peut déplacer ce composant dans une fenétre séparée public class JToolBarExemplel { public JToolBarExemplel() { gButton bouvrir = new JButton(new ImageIcon("[Link]")) ; Button bEnregistrer = new JButton (new ImageIcon("[Link]")) ; gButton bCouper = new JButton(new ImageIcon("[Link]")) ; Button bCopier = new JButton(new ImageIcon("[Link]")) ; JButton bColler = new JButton(new ImageIcon("[Link]")) ; [Link] ("Ouvrir un fichier") ; Professeur Lahoucine BALLIHI Université Mohammed V de Rabat ‘Année Universitaire 2019/2020 w Faculté des Sciences de Rabat Interface Homme Machine Département Informatique SMI-S6 // ajout de bulles d'aide [Link] ("Enregistrer le fichier") ; [Link] ("Couper vers le presse papier") ; [Link] ("Copier vers le presse papier") ; [Link] ("Coller depuis le presse papier"); JToolBar tb = new JToolBar() ; [Link] (bouvrir) ; [Link] (bEnregistrer) ; [Link](); // ajout d'une barre de séparation [Link](bCouper) ; [Link] (bCopier) ; [Link](bColler) ; JPanel panneau = new JPanel ( [Link] (new BorderLayout ()) ; [Link](tb, BorderLayout .NORTH) ; JFrame cadre = new JFrame(); cadre. add(panneau) ; cadre. setTitle("Barre d'outils") ; [Link](600, 400); cadre. setDefaultCloseOperation (3) ; cadre. setVisible (true) ; ye public static void main(String{] args) { new JToolBarExemplel () ; , } Compilez puis exécutez ce programme. Pour déplacer cette barre de menu, utilisez la méthode setFloatable(boolean). On peut construire une barre de menu avec des composants de différents types. Soit le programme suivant : public class JToolBarExemple2 { public JToolBarExemple2() { JToolBar tb = new JToolBar() ; [Link](true); // true par défaut [Link](new JButton ("Ouvriz")); [Link](new JButton ("Enregistrer")) ; [Link] () ; Icon ic = new ImageIcon(". /img/[Link]") ; [Link](new JButton("Java", ic) [Link] (new JRadioBut tonMenul tem ("ON/OF")) ; JFrame cadre = new JFrame (); [Link](tb, BorderLayout .PAGE_END) ; // en bas de page ou par défaut en haut : PAGE START [Link]("Barre d'outils (2)"); cadre. setSize (600, 200); cadre. setDefaultClose0peration (3) ; cadre. setVisible (true) ; h ) © Compilez puis exécutez ce programme. Professeur Lahoucine BALLIHI Faculté des Sciences de Rabat Interface Homme Machine Université Mohammed V de Rabat Année Universitaire 2019/2020 ye Département Informatique SMI-S6 Conteneur — JDesktopPane JDesktopPane est un conteneur qui est fait pour gérer les JInternalFrame. Ces composants peuvent étre déplacés, redimensionnés, minimisés, etc. II dérive de JLayeredPane(voir plus tard) et il n'utilise pas de gestionnaire de disposition. Soit le programme suivant : public class JDesktopPaneExemplel { public static void main(String[] args) { boolean resizable = true; boolean closeable = true; boolean maximizable = true; boolean iconifiable = true; String title = "Cadre interne"; JinternalFrame icadre = new JInternalFrame(title, resizable, closeable, maximizable, iconifiable) ; [Link] (300, 300); [Link](true) ; [Link](new JTextArea()); UDesktopPane desktop = new JDesktopPane() ; desktop. add (icadre) ; Jerame f = new JFrame("Cadre externe") ; £.add (desktop) ; £.setSize (400, 400) ; £.setVisible (true) ; } } ‘© Compilez puis exécutez ce programme. © Notez qu’on peut aussi créer plusieurs JInternalFrame. Soit le programme suivant : class CadreMDI extends JInternalFrame { public CadremDr() { super("", true, true, true, true); } public void setImage (String nomImage) { JPanel p = new JPanel (); JLabel uneImage = new JLabel (new ImageIcon (nomImage) ) ; [Link](uneImage) ; [Link](p) ; this .setTitle (nomImage) ; , } public class JDesktopPaneExemple2 extends JDesktopPane { CadreMDI[] images; String[] nomsFichier = { "./img/[Link]", "./img/[Link]", -/img/[Link]", "./img/[Link]", -/img/5..SPG"} ; public JDesktopPaneExemple2() { super (); images = new CadreMDI [nomsFichier. length] ; Professeur Lahoucine BALLIHI Faculté des Sciences de Rabat Interface Homme Machine w Université Mohammed V de Rabat Année Universitaire 2019/2020 } Département Informatique SMI-S6 for (int i = 0; i < [Link]; itt) { images [i] = new CadreMDI(); images [i] .setSize(200, 200); images [i].setLocation(100 * i, 50 * i);//effet 3D! images [i] .setImage (nomsFichier[i]) ; images [i] .setVisible (true) ; this .add(images[i]) } public static void main(String[] args) { } } JFrame £ = new JFrame(); £.add (new JDesktopPaneExemple2 ()) ; £.setDefaultCloseOperation (3) ; £,setVisible (true) ; £.setSize (500, 500) ; £.setTitle("Afficheur d'images") ; © Compilez puis exécutez ce programme, Conteneur — JLayeredPane JLayeredPane est un conteneur qui permet de gérer des composants disposés sur plusieurs couches. A chaque composant de ce conteneur sont associés deux entiers appelés niveau (layer) et position (position). Ces deux entiers définissent ordre d'empilement des composants contenus dans le panneau. Soit I'exemple suivant : public class JLayeredPaneExemple extends JFrame { public JLayeredPaneExemple() { super ("Test JLayeredPane") ; setSize (300, 200); setDefaultCloseOperation (3) ; JLayeredPane 1p = getLayeredPane() ; Button b3 = new JButton ("3"); [Link] (Color .white) ; [Link] (60, 100, 60, 60); gButton b2 = new JButton ("2"); b2. setBackground (Color yellow) ; [Link] (40, 60, 60, 60); Button bl = new JButton("1"); bl. setBackground ([Link]) ; [Link](20, 20, 60, 60); // Place les boutons dans les différentes couches [Link](b1, new Integer (1); [Link](b2, new Integer (2)) [Link](b3, new Integer (3)); , , © Compilez puis exécutez ce programme Professeur Lahoucine BALLIHI Faculté des Sciences de Rabat Interface Homme Machine Université Mohammed V de Rabat ‘Année Universitaire 2019/2020 ye Département Informatique SMI-S6 Application — Galerie d'images On souhaite faire une application java qui va lister verticalement la vignette ainsi les propriétés d'un ensemble d'images, qui se trouve dans un dossier donné, comme illustré par interface suivante. [)Prooieme-comenew-hnemédisie = - OD x Nome a pnows:16 taetsRies Pour faire cette application, tous d’abord, vous représentez les propriétés de chaque image sous forme d'une table html, vous pouvez donc déclarer tabHtml comme attribut de la classe de type String initialisé comme suit ; tabtml = "" + "" + “"+ "" + "" + "
{0}
{1} x {2}
{3} octets
{4, date, full}
"; Puis, vous formatez les propriétés de chaque image sous forme d'une chaine de caractére : description = [Link](tabHtml, [Link](), largeur hauteur, [Link]() , fichier. 1lastModified()); Ensuite, pour récupérer la vignette de chaque image en utilisant |a fonction suivante : private Icon vignette(File fichier) throws IOException { BufferedImage source = [Link] (fichier) ; largeur = [Link]() ; hauteur = [Link] () ; BufferedImage image = new BufferedImage (200, 150, [Link]()) ; double ratio = 200 / (double) largeur; AffineTransform retailler = [Link] (ratio, ratio) ; int interpolation = AffineTransformop.TYPE_BICUBIC; AffineTransformOp retaillerImage = new AffineTransfornOp(retailler, interpolation) ; [Link](source, image) ; return new ImageIcon (image) ; y Enfin, vous rassemblez la description et la vignette dans une étiquette : JLabel etiquette = new JLabel(description, icone, [Link]); Professeur Lahoucine BALLIHI

Vous aimerez peut-être aussi