7
votes

Est-il possible de mettre du texte sur une image dans un bouton?

J'ai des images .jpg dans mes boutons. J'aimerais aussi mettre du texte sur les images. J'utilise la syntaxe suivante pour celle-ci: xxx

mais je ne vois pas de texte dans les boutons (image unique). Qu'est-ce que je fais mal?


1 commentaires

Je viens de remarquer que pas une fois dans vos 15 dernières réponses, avez-vous la peine d'accepter une réponse. Si vous avez tout ce temps pour poster des questions, vous avez également le temps d'accepter une réponse donnée.


5 Réponses :


18
votes

Je ne sais pas pourquoi vous ne voyez pas le texte et l'icône. Par défaut, le texte doit être peint à droite de l'icône.

Pour afficher le texte en haut de l'icône que vous utilisez: xxx


0 commentaires

2
votes

essayez-vous de superposer du texte sur l'image ou de simplement positionner le texte en dehors de l'image? La positionnement du texte en dehors de l'image est facile et est un comportement par défaut car @CamickR a mentionné. Pour déplacer le texte en haut, vous pouvez:

ImageIcon icon = new ImageIcon(pathToicon);
JButton myButton = new JButton("Press me!", icon);
myButton.setVerticalTextPosition(SwingContstants.TOP);


0 commentaires

2
votes

Par défaut, les boutons SWING ont une position de texte horizontale de swingconstants.Trailing , qui dessinera le texte après l'icône (réfléchir à une case à cocher ou à un bouton radio). Si vous souhaitez que le texte centré sur l'icône, il vous suffit de définir la position de texte horizontale du bouton: xxx


0 commentaires

3
votes

Si vous souhaitez jouer de n'importe quelle manière que vous aimez dans n'importe quel composant pivotant, vous pouvez très bien remplacer la méthode de la peinture (). De cette façon, vous pouvez faire ce que vous voulez.

package test;

import java.awt.Graphics;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class ButtonTest {
    public static void main(String[] args){
        new ButtonTest().test();
    }

    public void test(){
        JFrame frame = new JFrame("Biohazard");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        JPanel pnl = new JPanel();
        pnl.add(new MyButton());
        frame.add(pnl);
        frame.setSize(600, 600);
        frame.setVisible(true);
    }

    class MyButton extends JButton{
        public void paint(Graphics g){
            //anything you want
        }
    }
}


0 commentaires

3
votes

jbutton bouton = nouveau jbutton (texte, icône); bouton.setverticalTextion (swingconstants.top); Bouton.SethorizontalTextion (SwingConstants.Center);

Cela a fonctionné pour moi.


0 commentaires