IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

SWT/JFace Java Discussion :

[SWT]image ET text sur un bouton SWT


Sujet :

SWT/JFace Java

  1. #1
    Futur Membre du Club
    Inscrit en
    Juin 2005
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 10
    Points : 6
    Points
    6
    Par défaut [SWT]image ET text sur un bouton SWT
    Salut,

    Je développe une appli en SWT et j'aurai voulu mettre à la fois une image et un texte dans un bouton.

    Bien entendu, je n'y parvient pas : le setTexte() supprime l'image éxistante et le setImage() supprime le texte éxistant...

    quelqu'un à une idée?


    [Modéré par Didier] : ajout de tag dans le titre - Les règles du forum Java

  2. #2
    Rédacteur
    Avatar de lunatix
    Homme Profil pro
    Architecte technique
    Inscrit en
    Novembre 2002
    Messages
    1 960
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Architecte technique

    Informations forums :
    Inscription : Novembre 2002
    Messages : 1 960
    Points : 3 736
    Points
    3 736
    Par défaut
    il me semble que ce n'est pas possible, car c'est une limitation d'un des trois systemes sous jacent.

  3. #3
    Futur Membre du Club
    Inscrit en
    Juin 2005
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 10
    Points : 6
    Points
    6
    Par défaut
    ok,

    sinon, j'ai bien la solution d'incorporer des composants swing (avec qui c'est possible). Mais je trouve que c'est une solution tirée par les cheveux pour pas grand chose.

    merci en tout cas..

  4. #4
    Rédacteur
    Avatar de lunatix
    Homme Profil pro
    Architecte technique
    Inscrit en
    Novembre 2002
    Messages
    1 960
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Architecte technique

    Informations forums :
    Inscription : Novembre 2002
    Messages : 1 960
    Points : 3 736
    Points
    3 736
    Par défaut
    il me semble que c'est un des cas, ou tu coinces a cause du coté natif. l'autre, c'est quand tu veux aligner des entetes de colonne

  5. #5
    Membre régulier Avatar de nin2
    Profil pro
    Inscrit en
    Février 2005
    Messages
    100
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations forums :
    Inscription : Février 2005
    Messages : 100
    Points : 109
    Points
    109
    Par défaut
    Salut Piwai,

    Tu auras peut-être quelques infos du côté du report de bugs d'eclipse :

    https://bugs.eclipse.org/bugs/show_bug.cgi?id=33967

    (PS : au fait, tu ne fait pas partie du Master ALMA de Nantes par hasard, parce que j'ai un pote nantais qui a le même pseudo ...).

  6. #6
    Futur Membre du Club
    Inscrit en
    Juin 2005
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 10
    Points : 6
    Points
    6
    Par défaut
    ok, merci. Je vè voir. Pour le master, si je suis la bas... mais nin2 comme pseudo, ca me dit rien!

  7. #7
    Membre régulier Avatar de nin2
    Profil pro
    Inscrit en
    Février 2005
    Messages
    100
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations forums :
    Inscription : Février 2005
    Messages : 100
    Points : 109
    Points
    109
    Par défaut
    Alors salut Piwai, c'est vrai que nin2 c'est pas très expressif comme Pseudo. Mon vrai prénom c'est Seb (ton délégué adjoint, si tu es bien celui auquel je pense) !!! ... Bon courage pour ton boulot. @+

  8. #8
    Membre régulier Avatar de nin2
    Profil pro
    Inscrit en
    Février 2005
    Messages
    100
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations forums :
    Inscription : Février 2005
    Messages : 100
    Points : 109
    Points
    109
    Par défaut
    Au fait, sinon tu peux créer ton propre composant graphique dans lequel tu permet l'ajout d'une image et d'un texte. Mais bon, il faut voir si ce composant t'es vraiment utile, sinon, ca vaut pas le coup de le redéveloppé en SWT alors qu'il existe en Swing.
    En revanche, (je sais pas si cela peut t'intéresser), les Items des barres d'outils et de menus acceptent texte+image (en SWT).

  9. #9
    Futur Membre du Club
    Inscrit en
    Juin 2005
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 10
    Points : 6
    Points
    6
    Par défaut
    oui j'avais remarqué pour la barre d'outil, c'est bien pour ca que je trouvais ca bizzare... C'est pour un proto à présenter au client -> faut que ce soit bô. Mais bon, c'est pas non plus primordiale donc je verrai plus tard...

    Merci en tout cas et @+

  10. #10
    Membre averti

    Profil pro
    Inscrit en
    Août 2006
    Messages
    218
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Août 2006
    Messages : 218
    Points : 305
    Points
    305
    Par défaut
    Pour ceux que ca intéresse, la version 3.2 de SWT permet d'afficher Image ET texte dans un bouton de l'application (sous XP, Linux et MacOS X).

  11. #11
    Invité
    Invité(e)
    Par défaut Master ALMA
    Salut,

    j'espère que vous ne m'en voudrez pas trop d'ajouter un message qui n'a rien à voir avec le SWT, mais sachant que vous avez parlé du master ALMA de Nantes, je voulais vous informer qu'un site des "anciens" a été ouvert : http://dessgi.free.fr.

    Merci de votre attention.

  12. #12
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    145
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 145
    Points : 179
    Points
    179
    Par défaut
    (Presque) par hazard, j'ai vu une solution pour mettre image et text sur les boutons d'une CoolBar.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
        IToolBarManager toolbar = new ToolBarManager(coolBar.getStyle() | SWT.BOTTOM);
        coolBar.add(toolbar);
     
        ActionContributionItem myCI = new ActionContributionItem(myAction);
        myCI.setMode(ActionContributionItem.MODE_FORCE_TEXT);
        toolbar.add(myCI);
    Si ça peut être utile...

  13. #13
    Futur Membre du Club
    Inscrit en
    Mai 2006
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 4
    Points : 5
    Points
    5
    Par défaut
    http://www.eclipse.org/swt/R3_2/new_and_noteworthy.html
    Perso je n'est pas pu essayer (sous windows 2000, ca ne marche pas).

    IToolBarManager toolbar = new ToolBarManager(coolBar.getStyle() | SWT.BOTTOM);
    coolBar.add(toolbar);

    ActionContributionItem myCI = new ActionContributionItem(myAction);
    myCI.setMode(ActionContributionItem.MODE_FORCE_TEXT);
    toolbar.add(myCI);
    Ce snippet est pour le toolbarmanager de JFace sinon pour une toolbar/coolbar normal tu peux avoir text et image sans forcer .

  14. #14
    Membre averti

    Profil pro
    Inscrit en
    Août 2006
    Messages
    218
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Août 2006
    Messages : 218
    Points : 305
    Points
    305
    Par défaut
    Les boutons et éléments de la toolbar peuvent mixer textes & images, à condition :
    a) d'utiliser SWT 3.2
    b) d'utiliser Windows XP, GTK ou MacOS X.

    Utilisateurs de 2000, de Motif ou de Photon, passez votre chemin

  15. #15
    Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 3
    Points : 3
    Points
    3
    Par défaut
    A une époque, j'avais récupéré ça sur le net (ça marche nickel)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    	public static void setButtonUI(Button button, String caption, Image icon) {
    		if (icon != null) {
    			/*
    			 * FEATURE IN SWT:  Button can't display both an image and a 
    			 * text caption at the same time.  The workaround is to make 
    			 * your own image containing the icon and the caption and use
    			 * that instead.
    			 */
     
    			// We still have to set the text in order for accelerator keys to
    			// work correctly.  The text just won't be displayed once the 
    			// image is set.
    			button.setText(caption);
     
    			// Figure out how big everything has to be
    			Rectangle iconSize = icon.getBounds();
     
    			GC gc = new GC(button);
    			Point captionSize = gc.textExtent(caption, SWT.DRAW_MNEMONIC);
     
    			Rectangle iconTotalSize = icon.getBounds();
    			iconTotalSize.width += 4;
    			iconTotalSize.width += captionSize.x;
    			gc.dispose();
     
    			// Draw the icon
    			Image image = new Image(Display.getDefault(), iconTotalSize.width,
    					iconTotalSize.height);
    			gc = new GC(image);
    			gc.setBackground(Display.getDefault().getSystemColor(
    					SWT.COLOR_BLACK));
    			gc.setForeground(button.getForeground());
    			gc.fillRectangle(iconTotalSize);
    			if (iconSize.height > captionSize.y) {
    				gc.drawImage(icon, 0, 0);
    				gc.setFont(button.getFont());
    				gc.drawText(caption, iconSize.width + 2,
    						iconSize.height - captionSize.y
    								- (iconSize.height - captionSize.y) / 2,
    						SWT.DRAW_MNEMONIC | SWT.DRAW_TRANSPARENT);
    			} else {
    				gc.drawImage(icon, 0,
     
    				captionSize.y - iconSize.height
    						- (captionSize.y - iconSize.height) / 2);
    				gc.setFont(button.getFont());
    				gc.drawText(caption, iconSize.width + 2, 0, SWT.DRAW_MNEMONIC
    						| SWT.DRAW_TRANSPARENT);
    			}
    			gc.dispose();
     
    			// Draw the transparancy mask
    			ImageData iconTransparancy = icon.getImageData()
    					.getTransparencyMask();
    			Image iconTransparancyMask = new Image(Display.getDefault(),
    					iconTransparancy);
    			PaletteData palette = new PaletteData(new RGB[] { new RGB(0, 0, 0), // transparant pixels are white
    					new RGB(0xFF, 0xFF, 0xFF), // opaque pixels are black
    			});
    			ImageData maskData = new ImageData(iconTotalSize.width,
    					iconTotalSize.height, 1, palette);
    			Image mask = new Image(Display.getDefault(), maskData);
    			gc = new GC(mask);
    			gc.setBackground(Display.getDefault().getSystemColor(
    					SWT.COLOR_BLACK));
    			gc.fillRectangle(0, 0, iconTotalSize.width, iconTotalSize.height);
    			if (iconSize.height > captionSize.y) {
    				gc.setBackground(Display.getDefault().getSystemColor(
    						SWT.COLOR_WHITE));
    				gc.drawImage(iconTransparancyMask, 0, 0);
    				gc.setForeground(Display.getDefault().getSystemColor(
    						SWT.COLOR_WHITE));
    				gc.drawText(caption, iconSize.width + 2,
     
    				iconSize.height - captionSize.y
    						- (iconSize.height - captionSize.y) / 2,
    						SWT.DRAW_MNEMONIC | SWT.DRAW_TRANSPARENT);
    			} else {
    				gc.setBackground(Display.getDefault().getSystemColor(
    						SWT.COLOR_WHITE));
    				gc.drawImage(iconTransparancyMask, 0,
     
    				captionSize.y - iconSize.height
    						- (captionSize.y - iconSize.height) / 2);
    				gc.setForeground(Display.getDefault().getSystemColor(
    						SWT.COLOR_WHITE));
    				gc.drawText(caption, iconSize.width + 2, 0, SWT.DRAW_MNEMONIC
    						| SWT.DRAW_TRANSPARENT);
    			}
    			gc.dispose();
     
    			// Get the data for the image and mask so we can compose them into
    			// the final icon...
    			maskData = mask.getImageData();
    			mask.dispose();
     
    			ImageData imageData = image.getImageData();
    			image.dispose();
     
    			// Make the final image (including transparancy)
    			Image iconPlusText = new Image(Display.getDefault(), imageData,
    					maskData);
     
    			button.setImage(iconPlusText);
    		} else {
    			button.setText(caption);
    		}
    	}

Discussions similaires

  1. [XL-2003] Image et Texte sur un bouton de la barre d'outils
    Par curt dans le forum Excel
    Réponses: 2
    Dernier message: 24/07/2009, 10h56
  2. Image sur un bouton SWT
    Par tiph02 dans le forum Eclipse Platform
    Réponses: 11
    Dernier message: 07/01/2009, 17h07
  3. plusieurs lignes de texte sur un bouton
    Par sefir dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 21/06/2007, 22h17
  4. Afficher une image au clic sur un bouton
    Par lycaon dans le forum Général VBA
    Réponses: 4
    Dernier message: 23/04/2007, 19h21
  5. Image et texte sur la même ligne : aligner verticalement les deux ?
    Par titoumimi dans le forum Mise en page CSS
    Réponses: 2
    Dernier message: 25/01/2007, 13h47

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo