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: mais je ne vois pas de texte dans les boutons (image unique). Qu'est-ce que je fais mal? P> p>
5 Réponses :
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: p>
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);
Par défaut, les boutons SWING ont une position de texte horizontale de swingconstants.Trailing code>, 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:
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 } } }
Cela a fonctionné pour moi. P> jbutton bouton = nouveau jbutton (texte, icône);
bouton.setverticalTextion (swingconstants.top);
Bouton.SethorizontalTextion (SwingConstants.Center); Code> P>
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.