2016-04-10 3 views
0
JLabel topCap = new JLabel (" Top Caption"); 
txtTop = new JTextField("Enter top Caption here"); 
topCaption = new JLabel("", JLabel.CENTER); 
viewerWindow.add(topCaption, BorderLayout.NORTH); 
JLabel bottomCap = new JLabel (" Bottom Caption"); 
txtBottom = new JTextField("Enter Bottom Caption here"); 
bottomCaption = new JLabel("",JLabel.CENTER); 
viewerWindow.add(bottomCaption,BorderLayout.SOUTH); 

J'ai un autre bloc de code dans lequel, lorsque l'utilisateur saisit du texte dans le JTextField, et appuie sur la mise à jour DButton il est affiché à la JFrame . Cela fonctionne bien pour tous les styles (italique et gras) sauf souligné. J'ai regardé partout et j'ai trouvé un bloc de code sur stackoverflow mais cela n'a pas aidé non plus. Si vous vous demandez, c'est la ligne de code qui ne fonctionne pas:Je suis en train de souligner le texte dans un JLabel, mais rien ne fonctionne pas du tout

JLabel label = new JLabel("Underlined Label"); 
Font font = label.getFont(); 
Map attributes = font.getAttributes(); 
attributes.put(TextAttribute.UNDERLINE, TextAttribute.UNDERLINE_ON); 
label.setFont(font.deriveFont(attributes)); 

Je suis complètement confus personne ne sait ce que je dois faire? Ou du moins quelle classe devrais-je examiner? merci

+0

Poster un [mcve] pour expliquer ce qui ne fonctionne pas – Reimeus

+0

@Reimeus Je ne suis pas sûr du tout ce qui ne fonctionne pas. quand j'utilise le bloc de code que je mets en bas, je reçois un message d'erreur disant "ne peut pas trouver la classe Map", mais je suis allé à la bibliothèque Java et je n'ai pas trouvé de carte là non plus. –

Répondre

0

Vous devez importer TextAttribute de AWT

java.awt.font.TextAttribute; 

Vous pouvez utiliser du HTML pour souligner. Mais pour un rendu plus rapide que le HTML, vous devriez vous en tenir à votre méthode.

JLabel.setText("<HTML><U>Underlined Text</U></HTML>"); 
+0

J'ai déjà importé ça, et toujours pas de chance. –

+0

pouvez-vous poster le message d'erreur exact ou expliquer ce qui n'est pas en cours d'exécution? –

+0

il n'y a aucun message d'erreur, juste le JLabel qui est sur l'écran ne change pas du tout. J'ai un JRadioButton qui, lorsqu'il est pressé, devrait changer le texte dans le JLabel à souligner. J'ai l'ActionListener attaché correctement parce que je l'ai testé avec d'autres styles de police (gras et italique). –

0

Vous pouvez facilement utiliser HTML dans JLabel. Par exemple, vous pouvez faire comme ça.

JLabel label=new JLabel(); 
label.setText("<html><u>Underlined Label</u></html>"); 
+0

et si je veux changer la taille aussi bien que souligner j'appellerais la méthode de setFont alors? –

+0

Dans ce cas, je pense que vous pouvez prendre un conseil de ce [lien] (http://stackoverflow.com/questions/2715118/how-to-change-the-size-of-the-font-of-a-jlabel -to-take-the-size-size) –

+0

Cela ne fonctionne pas dans mon cas. J'utilise WindowsClassicLookAndFeel. Avec L & F par défaut cela fonctionne. Donc c'est un bug. – FaithReaper