我通过扩展JTextPane实现了多行标签。构造函数设置各种属性以使其看起来像标签,包括禁用任何边框/将边距设置为0都很好。

环境:

使用jgoodies-looks-2.6.0 的

  • 设置com.jgoodies.looks.windows.WindowsLookAndFeel L&F(也已与javax.swing.plaf.metal.MetalLookAndFeel测试,同样的问题)
  • Windows 8 x64
  • Java SE 1.7

  • 当我增加字体大小时,第一个字母的左侧有时会有“空白” /在19pt处有〜1px的边距(可能随着字体大小而增加)。至少对于字母B,F和L会发生这种情况,但对于A肯定不会。这是一个示例:



    在左侧,您可以清楚地看到布局看起来很杂乱,标题的左边距有这个怪异的边缘。请注意,带有数字(1861)的第一行是常规JLabel。

    放大确认这一点(粉红色的线用于说明):



    因此,从我可以看到的排版是不正确的。

    可以认为这是挥杆中的错误吗?有办法解决吗?例如。在这种情况下,有没有一种简便且干净的方法(即,不使用paint()-ing)来精确控制摆动中的印刷功能?

    编辑:

    这类似于我的期望:



    与之前相比:

    最佳答案

    如果您在此处查看屏幕截图:

    特别是看一下1861年……您会发现1的两侧都有较大的空间。特别是1与8之间以及6与1之间的间隙大于8与6之间的间隙。

    这就是在该特定字体上排列布局的方式。他们清楚地认为1被推得太靠近其周围的字符,因此他们在两侧增加了更多空间。

    您“修复”此问题的选项是有限的。

  • 使用其他字体。
  • 将该行渲染为图像,扫描空白列,将其洗净以保留
  • 内置一些常见字符的手动技巧(即,如果字符串以1开头,则将行左移1个像素)
  • 故意使标题缩进或缩进,以使标题不对齐,从而偏移量不再可见。


  • 1861
        Baked Beans
        dkjfdf skdfjsdlf
    

    08-18 13:09