Download - Java : les GUI en Swing
Les fenêtres JWindow : la fenêtre la plus basique. pas de barre de
titre, pas de boutons de fermeture/redimensionnement, n'est pas redimensionnable par défaut. surtout pour faire des SplashScreen.
• JDialog : boîtes de dialogue. peut être modal. Elles sont destinées à travailler de pair avec la fenêtre principale.
• JFrame : la fenêtre principale. Indépendante, ne peut pas être modale. une barre de titre, peut accueillir une barre de menu. un bouton de fermeture, un bouton de redimensionnement et une icone.
JApplet : container intégrable dans une page web
Les JComponents JComponent est la classe de base de tous les
composants Swing, à part JFrame, JDialog et JApplet.
Les JComponents les caractéristiques ToolTipText setBorder( Border b) et getBorder()
(BorderFactory) setOpaque(boolean b) taille minimale, taille maximale taille
préférée un alignement en X et en Y setEnabled(boolean b) setName(String n)
Les bordures
BorderFactory.createXXXBorder :JPanel p = new JPanel(); p.setBorder(BorderFactory.createTitledBorder("Java"));
createEmptyBorder(int top, int left, int bottom, int right) //créer des marges
createLineBorder(Color color) createTitledBorder(Border border, String title) createEtchedBorder(Color highlight, Color shadow)
JOptionPane pour dialoguer JOptionPane.showMessageDialog
• Icon, message, OK button
JOptionPane.showConfirmDialog • Icon, message, and buttons: OK, OK/Cancel, Yes/No, or Yes/No/Cancel
JOptionPane.showInputDialog• Icon, message, textfield or combo box, buttons
JOptionPane.showOptionDialog • Icon, message, array of buttons or other components
Les LAF (look and feel)
Mécanisme pour changer l’apparence des composants
UIManager gère les LAF disponibles et le laf courant
getInstalledLookAndFeels() renvoi un tableau de LookAndFeelInfo:getName() nom du LAFgetClassName() nom de la classe à charger
avec UIManager.setLookAndFeel
LAF
setLookAndFeel est à appeler avant toute autre chose dans le code. Dans le cas où l’on sohaite changer le LAF dynamiquement il faut demander à Swing de recharger les composants: SwingUtilities.updateComponentTreeUI(this);
Nimbus
CrossPlateform Vectoriel Personnalisable
import javax.swing.UIManager.*; try { for (LookAndFeelInfo info : UIManager.getInstalledLookAndFeels()) { if ("Nimbus".equals(info.getName())) { UIManager.setLookAndFeel(info.getClassName());
break; } }} catch (Exception e) { // If Nimbus is not available, you can set the GUI to another look and feel. }
NimbusResizing :
// mini myButton.putClientProperty("JComponent.sizeVariant", "mini"); // small mySlider.putClientProperty("JComponent.sizeVariant", "small"); // large myTextField.putClientProperty("JComponent.sizeVariant", "large");
Coloring :
UIManager.put("nimbusBase", new Color(...)); UIManager.put("nimbusBlueGrey", new Color(...)); UIManager.put("control", new Color(...));
Le Layout null (absolute positioning)Positionnement manuelle des elements au
pixel avec setBounds ou setLocation et setSize
Le setResize de toute la fenêtre doit etre mis à false.
ajouter les composants dans le conteneur en leur associant une contrainte de type GridBagConstraints :
gridx : position en x dans le grille. gridy : position en y dans la grille. gridwidth : nombre de colonnes occupées par
le composant. (GridBagConstraints.REMAINDER GridBagConstraints.RELATIVE)
gridheight : nombre de lignes occupées par le composant.
weightx weighty anchor :
fill : NONE, HORIZONTAL, VERTICAL, BOTH insets : espace autour du composant. ipadx : espace interne ipady :
Les événements
Les composants Swing créent des événements, soit directement, soit par une action de l'utilisateur sur le composant. Ces événements peuvent déclencher une action exécutée par d'autre(s) composant(s).
Un composant qui crée des événements est appelé source. Le composant source délègue le traitement de l'événement au composant auditeur.
Un composant qui traite un événement est appelé auditeur (listener)
Source s = new Source();
Auditeur a = new Auditeur();
s.addXxxListener(a);
// a se recense auprès de s et va pouvoir
// traiter les événements générés par s ...
s.removeXxxListener(a);
class Auditeur implements Xxxlistener{
...
void traiter(XxxEvent e){
// le traitement de l'événement e
}
...
}
ActionEvent Object getSource() Retourne l'objet source de
l'événement. int getID()Retourne le type d'événement. String getActionCommand()Retourne le texte associé
au composant source de l'événement (bouton ou menu) int getModifiersRetourne un entier indiquant si les
touches maj, alt ou ctrl étaient appuyées au moment de la génération de l'événement.
long getWhen()Retourne la date et l'heure de la génération de l'événement.
String paramString()Retourne une chaîne de caractères contenant toutes les informations précédentes.
ActionEvent
interface ActionListener {
void actionPerformed(ActionEvent e);
}
Les composants sources de ActionEvent sont Boutons : JButton, JRadioButton, JCheckBox,
JToggleButton Menus : JMenuItem, Jmenu,
JRadioButtonMenuItem, CheckBoxMenuItem Texte : JTextField
MouseEvent Object getSource() Retourne l'objet source de l'événement. int getID() Retourne le type d'événement. Point getPoint() Retourne les coordonnées de la souris lors de la
génération de l'événement. int getX() Retourne la coordonnée en X de la souris lors de la génération
de l'événement. int getY() Retourne la coordonnée en Y de la souris lors de la génération
de l'événement. int getModifiers Retourne un entier indiquant si les touches maj, alt ou
ctrl étaient appuyées au moment de la génération de l'événement. long getWhen() Retourne la date et l'heure de la génération de
l'événement. int getButton() Retourne quel bouton a été cliqué. les trois valeurs
possibles sont MouseEvent.BUTTON1, MouseEvent.BUTTON2, MouseEvent.BUTTON3
int getClickCount() Retourne le nombre de clics associés à cet événement.
MouseEvent
interface MouseListener {
void mouseClicked(MouseEvent e);
void mouseEntered(MouseEvent e);
void mouseExited(MouseEvent e);
void mousePressed(MouseEvent e);
void mouseReleased(MouseEvent e);
}
MouseEvent
1. mousePressed
2. mouseReleased
3. mouseClicked
Tous les composants peuvent être sources de MouseEvent
KeyEvent Object getSource() Retourne l'objet source de l'événement. int getID() Retourne le type d'événement. char getKeyChar() Retourne le caractère correspondant à la
touche du clavier, ou java.awt.event.KeyEvent.CHAR_UNDEFINED s'il n'y a pas de caractère associé à la touche (touche de fonction par exemple).
int getKeyCode() Retourne le code du caractère correspondant à la touche du clavier.
int getModifiers Retourne un entier indiquant si les touches maj, alt ou ctrl étaient appuyées au moment de la génération de l'événement.
long getWhen() Retourne la date et l'heure de la génération de l'événement.
String getKeyModifiersText(int > mod) Retourne le modifieur sous forme de chaîne de caractères : Maj+Crtl+Alt.
KeyEvent
interface MouseListener{ void keyTyped(KeyEvent e);
void keyPressed(KeyEvent e);
void KeyReleased(KeyEvent e);
}1. keyPressed
2. keyTyped : pour les touches qui ont un effet sur le texte d'un composant texte.
3. keyReleased
Tous les composants peuvent être sources de KeyEvent
AdaptateurUn adaptateur XxxAdapter est une classe abstraite qui fourni une implémentation de la classe XxxListener. Les méthodes implémentées sont toutes vides, et ainsi permettent à un utilisateur de l'adaptateur de ne redéfinir que le traitement qui l'intéresse.Exemple : Un adaptateur qui ne redéfinit
que KeyPressed et keyTyped :
composantSource.addKeyListener(
new java.awt.event.KeyAdapter() { public void keyPressed(java.awt.event.KeyEvent e){
. . .
}
public void keyTyped(java.awt.event.KeyEvent e){
. . .
}
});