JLabel文本Y绘制坐标

时间:2014-01-30 14:29:06

标签: java swing jlabel

默认JLabel在其边界中间绘制文本。例如,如果标签的height为20,font height为14,则Y坐标为(20 - 14)/2 = 3。像这样:

Red line is the JLabel bounds

如果要将文字与TOP JLabel的{​​{1}}对齐,我该怎么办?像这样:

Red line is the JLabel bounds

UPD:

bounds

2 个答案:

答案 0 :(得分:2)

你应该pack框架。如果是这样,那么标签中没有未使用的空格。如果您想要空白空间,请使用空白边框

label.setBorder(new EmptyBorder(0, 0, 5, 0));

                           top, left, bottom, right

此外,不要设置尺寸,使用布局管理器,让他们为您进行尺寸调整。设置尺寸会给你。设置尺寸将为您提供在不同平台上可能看起来和执行不同的严格外观。布局管理器将使您的GUI更加流畅,适应不同的环境。

有关使用布局的详细信息,请参阅Laying out Components Within a Container

另见Should I avoid the use of set(Preferred|Maximum|Minimum)Size methods in Java Swing?


答案 1 :(得分:1)

与往常一样,API是您最好的朋友:http://docs.oracle.com/javase/7/docs/api/javax/swing/JLabel.html#setVerticalAlignment(int)

编辑 - 根据您更新的SSCCE,问题是您的BoxLayout正在缩小JLabel的范围,因此垂直文本位置并不重要。尝试使用BorderLayout来检查它。

问题在于JLabel的插图在JLabel的顶部和底部添加了一个小空间,因此即使文本位于顶部,您的文本也会居中。这是针对插入问题的修复:How to change gap in swing label