Introduction à Swing n°2

publicité
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
Téléchargement