从JLabel文本中删除下划线

时间:2016-08-05 07:57:48

标签: java swing jlabel

我曾经在点击此代码后强调JLabel文字:

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));

所以现在我需要将其恢复到第一个状态(没有下划线)一旦点击了另一个JLabel,我将改变什么?

先谢谢你了!

2 个答案:

答案 0 :(得分:3)

事实证明TextAttribute.UNDERLINE_OFF不是真正的常数。所以我咨询了TextAttribute#UNDERLINE documentation

public static final TextAttribute UNDERLINE
     

下划线的属性键。值是Integer的实例。默认值为-1,表示没有下划线。

     

提供常量值UNDERLINE_ON

     

下划线影响视觉边界和文本轮廓。

事实证明,默认值为-1。因此,要将文本还原为不加下划线,请使用:

attributes.put(TextAttribute.UNDERLINE, -1);

答案 1 :(得分:0)

答案attributes.put(TextAttribute.UNDERLINE, -1);对我不起作用。

但是:

label.setFont(new Font(font.getName(), font.getStyle(), font.getSize())); 

有效!