我们可以在 Java 中将两种字体样式组合在一起吗?

Posted

技术标签:

【中文标题】我们可以在 Java 中将两种字体样式组合在一起吗?【英文标题】:Can we combine 2 font styles together in Java? 【发布时间】:2011-10-18 07:11:11 【问题描述】:

我正在尝试更改JLabel 的字体,使其同时为BOLDITALIC,但似乎没有为此定义静态字段。我们如何将两种样式结合起来,以便我们可以使用粗斜体字体?

此代码将通过使用静态字段BOLD 仅使用粗体来执行此操作,但没有为粗体和斜体定义字段:

Font font = new Font("Verdana", Font.BOLD, 12);
label = new JLabel ("New Image") ;
label.setFont(font);
label.setForeground(Color.Gray.darker());

【问题讨论】:

【参考方案1】:

是的,style 参数被视为位掩码:

new Font("Verdana", Font.BOLD | Font.ITALIC, 12)

【讨论】:

按位“或” |优于加法(“+”) @Hovercraft:同意。正如@Paŭlo cmets,+|^ 在这种情况下是等价的。 + 可能更具可读性,但这可能是帕斯卡的说法。太糟糕了EnumSet 是后来添加的。 @trashgod:它在这里的工作方式相同,但使用 + 不是一个好习惯,因为它以后可能无法工作,例如,如果代码将位图添加到已经有这个位的位图地图(有时是现实情况)。例如,如果我有一个 myFontStyles 变量,我想确保使用斜体,myFontStyles | Font.ITALIC 总是可以工作,而添加可能会造成灾难。 @trashgod 为什么会有这么不明显的 api?并且现有 Font 对象上没有额外的斜体或粗体设置器。 @SašaŠijak: EnumSet 可能是更好的代表,但几年后才出现;抱歉延迟回复。【参考方案2】:

From the API documentation of this constructor:

参数:

... style - 字体的样式常量。样式参数是一个整数位掩码,可以是PLAIN,或者是BOLD 和/或ITALIC 的按位联合(例如,ITALICBOLD|ITALIC)。如果样式参数不符合预期的整数位掩码之一,则样式设置为PLAIN。 ...

因此,使用

new Font("Verdana", Font.BOLD | Font.ITALIC, 12);

这里。

【讨论】:

@trashgod:+|^ 在像这里这样的分离位的情况下确实没有区别。 (斜体 = 2 = 2¹,粗体 = 1 = 2⁰。) 但这不是一个好习惯,因为你很容易遇到我上面评论中提到的情况。

以上是关于我们可以在 Java 中将两种字体样式组合在一起吗?的主要内容,如果未能解决你的问题,请参考以下文章

pdf 锐利的字体样式粗体,斜体和下划线一起

如何在 Android TextView 中将字体样式设置为粗体、斜体和下划线?

css怎么让两个字体颜色叠加在一起

我可以在 React Native 中将 Zebra 扫描仪包与 Expo 项目一起使用吗?

word一种样式和格式如何设置两种字体

CSS - 样式字体真棒字体图标