我们可以在 Java 中将两种字体样式组合在一起吗?
Posted
技术标签:
【中文标题】我们可以在 Java 中将两种字体样式组合在一起吗?【英文标题】:Can we combine 2 font styles together in Java? 【发布时间】:2011-10-18 07:11:11 【问题描述】:我正在尝试更改JLabel
的字体,使其同时为BOLD
和ITALIC
,但似乎没有为此定义静态字段。我们如何将两种样式结合起来,以便我们可以使用粗斜体字体?
此代码将通过使用静态字段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
的按位联合(例如,ITALIC
或BOLD|ITALIC
)。如果样式参数不符合预期的整数位掩码之一,则样式设置为PLAIN
。 ...
因此,使用
new Font("Verdana", Font.BOLD | Font.ITALIC, 12);
这里。
【讨论】:
@trashgod:+
、|
和 ^
在像这里这样的分离位的情况下确实没有区别。 (斜体 = 2 = 2¹,粗体 = 1 = 2⁰。)
但这不是一个好习惯,因为你很容易遇到我上面评论中提到的情况。以上是关于我们可以在 Java 中将两种字体样式组合在一起吗?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Android TextView 中将字体样式设置为粗体、斜体和下划线?