【问题标题】:Can someone explain how this works please? [closed]有人可以解释一下这是如何工作的吗? [关闭]
【发布时间】:2016-04-10 02:35:45
【问题描述】:
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));

我今天已经看到这个代码至少 100 多次,我已经尝试了 100 多次,但每次它都不起作用。我试图在 JLabel 中为文本加下划线,这是我发现的唯一代码块,stackoverflow 上的其他人似乎都理解这一点,除了我???地图是一个类吗?

【问题讨论】:

  • 从技术上讲,Map 是一个接口,但您可以将其视为一个类。我想attributes是一个HashMap,它实现了Map。
  • @billjamesdev 所以映射属性 = font.getAttributes();是接口的初始化吗?
  • 嗯,不,属性包含键值对“列表”中字体的所有属性。 List 是这样的 ["value1", "value2"],而 Map 是这样的 ["attrName": "attrValue", "attrName2": "attr2Value" ]。地图值是通过键(上面的“attrName”)而不是通过索引(如列表)检索的
  • 你在上面的问题对我来说很好。您是否看到了标签,只是没有下划线?还是标签根本没有显示(在这种情况下,可能是因为您没有将它添加到视图中)?

标签: java class jlabel


【解决方案1】:

因此,根据您的问题和 cmets,您在某处有代码创建名为 topCaption 的 JLabel,将其添加到名为 viewWindow 的 JPanel,您可以将标签视为结果。

所以你有什么地方:

JLabel topCaption = new JLabel( you may have some stuff here );

然后,执行以下操作:

Font font = topCaption.getFont();
Map attributes = font.getAttributes();
attributes.put(TextAttribute.UNDERLINE, TextAttribute.UNDERLINE_ON);
topCaption.setFont(font.deriveFont(attributes));

另外,我可能建议您在继续阅读之前需要做更多的阅读,因为了解什么是 Map 等对于大多数 UI 编程来说都是非常基础的,而且您将继续遇到这样的麻烦没有一些基础知识。

【讨论】:

  • 非常感谢您的帮助。我实际上弄清楚了为什么它不起作用,并且实际上我需要在网上搜索它的想法有点令人尴尬。哦,非常感谢
猜你喜欢
  • 1970-01-01
  • 2011-09-12
  • 1970-01-01
  • 2023-01-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-27
  • 2015-01-09
相关资源
最近更新 更多