java : les gui en swing

34
CRÉER SON INTERFACE GRAPHIQUE SOUS JAVA SWING

Upload: nayd-nabil

Post on 28-Jun-2015

531 views

Category:

Technology


3 download

TRANSCRIPT

CRÉER SON INTERFACE

GRAPHIQUE SOUS JAVA

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(...));

Gestionnaires de placement

BorderLyout

FLowLayout

LaoutManager par défaut des JPanel

BoxLayout

GridLayout

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.

GroupLayoutLayout complexeCrée pour les GUI builders comme

MATISSE qu’on retrouve sur NetBeans IDE

GirdBagLayout

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){

 . . . 

}

});