JCheckBox:多行文本的垂直对齐

Posted

技术标签:

【中文标题】JCheckBox:多行文本的垂直对齐【英文标题】:JCheckBox: Vertical alignment for multi-line text 【发布时间】:2014-04-03 00:09:07 【问题描述】:

在使用带有 JCheckBox 的自定义字体时,我在 Java (swing) 中遇到了一个轻微的视觉问题。我有一个 JCheckBox 文本跨越多行。使用默认字体时,它看起来不错。但是,当我使用自定义字体(从 .ttf 文件即时导入)时,垂直对齐似乎略有偏移,使其看起来很难看。复选框附带的文本应该比显示的略

有没有办法调整复选框的文本标签的垂直位置?当我使用此代码对齐顶部的复选框时会发生这种情况:checkbox.setVerticalTextPosition(SwingConstants.TOP)

【问题讨论】:

默认字体有什么问题?尺寸?沥青?风格?可用的字形? @trashgod 尺寸+风格,我想。我只想使用不同的字体。我在 UI 的其余部分也使用了这种字体。 【参考方案1】:

每个平台都指定物理字体用于定义的逻辑Font系列。这些字体具有明确定义的指标,已知与主机平台兼容。使用奇数字体会让您受制于字体设计者和平台对字体提示的实现。相反,使用UIManager导出所需的大小和样式在构造 GUI 之前,如 here 所示。

【讨论】:

感谢您的回复。我使用的字体是 Roboto,这是一种相当常见的字体,所以我认为它应该可以与 swing 一起使用。我试着按照你说的做,但它似乎只改变了字体的大小/样式 - 问题仍然存在。 对,问题在于平台如何应用字体,使用从主机操作系统获得的指标。除了样式和大小,您还可以申请AffineTransform 感谢您让我了解 AffineTransform - 我尝试对字体应用翻译以偏移其位置。无论出于何种原因,它似乎对我程序中的所有文本都有效,除了复选框的标签。无论如何,我找到了一个解决方案 - 我使用了一个复选框和一个单独的复选框,无论出于何种原因,这似乎更适合这种字体。 不客气;很高兴你把事情解决了。如果您使用单独的标签,请查看JLabel#setLabelFor()

以上是关于JCheckBox:多行文本的垂直对齐的主要内容,如果未能解决你的问题,请参考以下文章

垂直对齐图像和多行文本

垂直对齐位于浮动同级旁边的 Div 中的多行文本

在 Flutter 中对齐多行 TextField 中的提示文本

将图标垂直对齐第一行文本的中心

如何将图像垂直对齐到某些文本第一行的中心?

HTML 5 Canvas 上的垂直对齐文本