Participer au site avec un Tip
Rechercher
 

Améliorations / Corrections

Vous avez des améliorations (ou des corrections) à proposer pour ce document : je vous remerçie par avance de m'en faire part, cela m'aide à améliorer le site.

Emplacement :

Description des améliorations :

Swing - Mise en oeuvre d'une barre d'outils

Mise en oeuvre d'une barre de menu Mise en oeuvre d'un menu contextuel



Accès rapide :
La vidéo
Positionnement de votre barre d'outils
Une barre d'outils peut contenir divers composants
L'exemple de code

La vidéo

Cette vidéo vous apprend à construire une barre d'outils pour votre application Swing.


Mise en oeuvre d'une barre d'outils

Positionnement de votre barre d'outils

Une barre d'outils, une instance de la classe javax.swing.ToolBar, est un conteneur de composants graphiques. Traditionnellement, une barre d'outils est positionnée en haut de la fenêtre. Pour autant, une barre d'outils est, par défaut, « dockable » : c'est à dire qu'on peut la décroccher de la fenêtre ou la repositionner sur un côté quelconque.

Une barre d'outils positionnée en haut. Une barre d'outils positionnée à gauche (zone Ouest).

En fait, une barre d'outils se positionne dans un conteneur Swing associé à une stratégie de positionnement de type java.awt.BorderLayout. Si une des quatre zones latérales est innoccupée, alors vous pourrez y place la barre.

Le gripper de la barre d'outils.

Vous pouvez, durant l'exécution de l'application, positionner la souris dessus le « gripper » de la barre d'outils et la déplacer d'une zone à une autre (à condition que cette zone soit innocupée) par simple drag'n drop. Il est même possible de détacher la barre de sa fenêtre, comme en atteste la capture d'écran suivante.

Une barre d'outils détachée de sa fenêtre.
cliquez sur la croix de la fenêtre associée à votre barre d'outils pour la repositionner à l'intérieur de la fenêtre principale.

Une barre d'outils peut contenir divers composants

Vous pouvez placer autre chose que des boutons dans votre barre d'outils. Par exemple, il est possible d'y ajouter une zone de saisie de texte, une liste déroulante, des cases à cocher, ... Vous pouvez par exemple imaginer l'extrait de code suivant.

 1 
 2 
 3 
 4 
JToolBar toolBAr = new JToolBar();
toolBar.add( new JButton( new ImageIcon( "icons/aFile.png" ) ) );
toolBar.add( new JCheckBox( "Check me" ) );
toolBar.add( new JTextBox( "Edit me" ) );
Ajout de composants graphiques dans votre barre d'outils

Et voici un visuel d'une barre d'outils contenant différents types de composants graphiques.

Une barre d'outils détachée de sa fenêtre.

L'exemple de code

 1 
 2 
 3 
 4 
 5 
 6 
 7 
 8 
 9 
 10 
 11 
 12 
 13 
 14 
 15 
 16 
 17 
 18 
 19 
 20 
 21 
 22 
 23 
 24 
 25 
 26 
 27 
 28 
 29 
 30 
 31 
 32 
 33 
 34 
 35 
 36 
 37 
 38 
 39 
 40 
 41 
 42 
 43 
 44 
 45 
 46 
 47 
 48 
 49 
 50 
 51 
 52 
 53 
 54 
 55 
 56 
 57 
 58 
 59 
 60 
 61 
 62 
 63 
 64 
 65 
 66 
 67 
 68 
 69 
 70 
 71 
 72 
 73 
 74 
 75 
 76 
 77 
 78 
 79 
 80 
 81 
 82 
 83 
 84 
 85 
 86 
 87 
 88 
 89 
 90 
 91 
 92 
 93 
 94 
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;

import javax.swing.AbstractAction;
import javax.swing.Action;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.JToolBar;
import javax.swing.UIManager;
import javax.swing.plaf.nimbus.NimbusLookAndFeel;


public class ToolBarSample extends JFrame {
    
    private static final long serialVersionUID = 500331469341413571L;
    
    
    /* Construction de l'interface graphique */
    public ToolBarSample() {
        super( "JToolBar sample" );
        this.setSize(600,400);
        this.setLocationRelativeTo( null );
        this.setDefaultCloseOperation( DISPOSE_ON_CLOSE );
        
        // Construction et injection de la barre d'outils
        JPanel contentPane = (JPanel) getContentPane();
        contentPane.add( this.createToolBar(), BorderLayout.NORTH );
    }
    

    /* Méthode de construction de la barre d'outils */
    private JToolBar createToolBar() {

        // La barre d'outils à proprement parler
        JToolBar toolBar = new JToolBar();

        JButton btnNew = new JButton( new ImageIcon( "icons/new.png") );
        btnNew.setToolTipText( "New File (CTRL+N)" );
        btnNew.addActionListener( this::btnNewListener );
        toolBar.add( btnNew );

        JButton btnSave = new JButton( new ImageIcon( "icons/save.png" ) );
        btnSave.setToolTipText( "Save (CTRL+S)" );
        toolBar.add( btnSave );

        JButton btnSaveAs = new JButton( new ImageIcon( "icons/save_as.png" ) );
        btnSaveAs.setToolTipText( "Save As..." );
        toolBar.add( btnSaveAs );

        toolBar.addSeparator();

        JButton btnCopy = new JButton( new ImageIcon( "icons/copy.png") );
        btnCopy.setToolTipText( "Copy (CTRL+C)" );
        toolBar.add( btnCopy );

        JButton btnCut = new JButton( new ImageIcon( "icons/cut.png") );
        btnCut.setToolTipText( "Cut (CTRL+X)" );
        toolBar.add( btnCut );

        JButton btnPaste = new JButton( new ImageIcon( "icons/paste.png") );
        btnPaste.setToolTipText( "Paste (CTRL+V)" );
        toolBar.add( btnPaste );

        toolBar.addSeparator();

        JButton btnExit = new JButton( new ImageIcon( "icons/exit.png") );
        btnExit.setToolTipText( "Exit (ALT+F4)" );
        toolBar.add( btnExit );

        toolBar.addSeparator();

        // Autres types de composants graphiques
        toolBar.add( new JButton( new ImageIcon( "icons/aFile.png" ) ) );
        toolBar.add( new JCheckBox( "Check me" ) );
        toolBar.add( new JTextField( "Edit me" ) );

        return toolBar;
    }

    private void btnNewListener( ActionEvent event ) {
        JOptionPane.showMessageDialog( this, "Button clicked !" );
    }
   
    public static void main(String[] args) throws Exception {
        UIManager.setLookAndFeel( new NimbusLookAndFeel() );
        ToolBarSample frame = new ToolBarSample();
        frame.setVisible( true );
    }
}
Exemple de mise en oeuvre d'une barre d'outils


Mise en oeuvre d'une barre de menu Mise en oeuvre d'un menu contextuel