ING 1 - POO Java année 2016 -2017 Introduction à Swing n°2 À réaliser Les objectifs de cette séance sont les suivants : – découvrir l'API Swing (suite) – La classe Color - La classe Font - La classe JTextField La classe Color La classe jawa.awt.Color (https://docs.oracle.com/javase/7/docs/api/java/awt/Color.html) propose un certain nombre de constantes définissant les couleurs de base (attributs public static final) comme Color.RED, Color.BLUE… Il est également possible de définir en utilisant un des constructeurs de la classe Color d'instancier un objet de la classe Color en précisant les valeurs de rouge, vert et bleu. Pour définir les couleurs d'un composant graphique (contrôles graphiques qui héritent de la classe JComponent), les méthodes suivantes lui seront appliquées : • setBackground(objet de la classe Color) : définit la couleur d'arrière-plan • setForeground(objet de classe Color) : définit la couleur d'avant-plan (couleur des caractères) Par exemple, pour définir la couleur d'arrière-plan d'une étique JLabel « titre » à jaune, on peut utiliser l'une des trois possibilités JLabel titre = new JLabel("titre"); titre.setBounds(10,10,100,50); Container conteneur = getContentPane(); conteneur.add(titre); titre.setBackground(Color.YELLOW); // utilisation d'une constante titre.setBackground(new COlor(255,255,0)); // utilisation du constructeur titre.setBackground(Color.decode("#ffff00"); // utilisation d'une méthode statique Certains composants (comme JLabel ont) ont leur arrière-plan transparent : il est nécessaire de le rendre opaque pour afficher la couleur d'arrière-plan. titre.Opaque(true); Voici un exemple afin de positionner l'arrière-plan d'un JPanel à la couleur bleue. import javax.swing.JFrame; import javax.swing.JPanel; import java.awt.Color; public class Ex03 extends JFrame { public Ex03(){ setUI(); } private void setUI(){ setTitle("Utilisation de Color"); setLocationRelativeTo(null); setSize(500, 500); JPanel monPanel = new JPanel(); monPanel.setBackground(Color.BLUE); this.add(monPanel); setVisible(true); } public static void main(String [] args){ } Ex03 maFenetre = new Ex03(); } La classe Font La classe java.awt.Font permet également de manipuler les fontes (https://docs.oracle.com/javase/8/docs/api/java/awt/Font.html) Pour créer un objet java.awt.Font, on fournit au constructeur le nom de la police ou de la famille de polices, son style et sa taille en points : Font font = new Font ( Font.DIALOG , Font.PLAIN , 12) ; Font font = new Font ( "Helvetica" , Font.BOLD , 32) ; Avec : • les noms des familles de polices standards parmi Font.DIALOG, Font.DIALOG_INPUT, Font.MONOSPAC , Font.SERIF, ou Font.SANS_SERIF (constantes de la classe Font) • les noms de polices parmi celles disponibles (cf. plus bas) • les styles parmi : Font.PLAIN, Font.BOLD, Font.ITALIC, Font.BOLD+Font.ITALIC (ou Font.BOLD|Font Pour définir la police de caractères des composants, la méthode setFont(une fonte) sera utilisée : titre.setFont (font) ; titre.setFont( new Font ("Helvetica", Font.PLAIN,32)) ; Il est possible de lister les fontes disponibles en Java en utilisant le code suivant : public class ListeFontes { public static void main(String [] args){ String [] listeFontes = java.awt.GraphicsEnvironment.getLocalGraphicsEnvironment().getAvailableFontFamil yNames(); for ( String fonte : listeFontes ) System.out.println(fonte) ; } } Exercice : Réaliser une classe Fenêtre1 à partir de la capture d’écran ci-dessous et en suivant les instructions : La classe ’Fenetre1’ hérite de la classe JFrame. À l’intérieur de ce JFrame, vous ajouterez un conteneur de type JPanel . Le gestionnaire de positionnement de ce JPanel sera positionné à null par la commande suivante (en supposant bien évidemment que votre JPanel s’appelle monPanel) : monPanel.setLayout(null); Nous étudierons les gestionnaires de positionnement dans le TP suivant 1. définir les membres attributs (contrôles graphiques et constantes) suivants : • 1 bouton (btnConvertir de type JButton) • 2 zones de saisie (txtDeviseSource et txtDeviseCible de type JTextField) • 3 étiquettes (lblTitre, lblDeviseSource et lblDeviseCible de type JLabel) • 2 constantes chaînes de caractères pour mémoriser EUR et USD (DEVISE_SOURCE et DEVISE_DEVISE_CIBLE) 2. dans le constructeur : • instancier et ajouter les composants au conteneur (utiliser la figure pour définir la position et la taille des différents composants.) • et, pour la fenêtre (l’objet courant), définir : ◦ la taille de la fenêtre ◦ le titre de la fenêtre ◦ l’opération par défaut lors de la fermeture ◦ la position sur l’écran ◦ et la rendre visible . 3. dans la méthode ’main’ : instancier un objet de Fenetre1. Modifier les couleurs et les polices des composants d’interface. Compiler et tester Tester le redimensionnement de la fenêtre. Quelques informations : • la fonte utilisée pour écrire « les DEvises » est crée en utilisation la commande setFont(« Helvetica », Font.PLAIN, 32) • pour positionner les éléments vous utiliserez la méthode setBounds • pour centrer horizontalement ou verticalement, vous pouvez regarder les méthodes setHorizontalAlignment et setVerticalAlignment Résultat attendu