【问题标题】:Underlined JLabel带下划线的 JLabel
【发布时间】:2013-03-31 08:18:32
【问题描述】:

我正在尝试为 JLabel 加下划线。我到处寻找,但我什么也没得到。即使在属性中,也没有为 JLabel 加下划线的选项。我能做什么?

【问题讨论】:

    标签: java swing netbeans jlabel


    【解决方案1】:
    JLabel label = new JLabel("Underlined Label");
    Font font = label.getFont();
    Map<TextAttribute, Object> attributes = new HashMap<>(font.getAttributes());
    attributes.put(TextAttribute.UNDERLINE, TextAttribute.UNDERLINE_ON);
    label.setFont(font.deriveFont(attributes));
    

    【讨论】:

    • +1。此外,label.getText() 现在将返回实际的预期文本,而不是 HTML 标记。
    • 最好使用Map&lt;TextAttribute, Object&gt; attributes = new HashMap&lt;&gt;(font.getAttributes());来避免编译器警告unchecked call to put(k v) (...)
    【解决方案2】:
    JLabel label = new JLabel("<HTML><U>YOUR TEXT HERE</U></HTML>");
    label.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
    

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

    【讨论】:

    • 别忘了关闭你的标签!
    • @Clark 没关系
    • @devaldcool,即使没关系,至少应该遵循一个好的做法来养成良好的习惯。粗心的编码是通往黑暗面的道路。粗心的编码会导致不良习惯。坏习惯会导致代码损坏。破坏代码导致痛苦。
    • @hfontanez 我确定在阅读了您的评论后,您可以在弹出之前安全地移除 pendrive,或者用左手握住叉子……生活很简单,伙计……不要浪费时间关闭标签或安全取出随身碟,像你以前从未吃过的一样吃
    • 我应该把这些代码放在哪里? initComponents() 不可编辑,我使用的是 Netbeans 8