Java JLabel文本Y绘制坐标
默认的Java JLabel文本Y绘制坐标,java,swing,jlabel,Java,Swing,Jlabel,默认的JLabel在其边界的中间绘制文本。例如,如果标签的height为20,font-height为14,Y坐标将为(20-14)/2=3。像这样: 如果要将文本与JLabel边界的顶部对齐,应该怎么做?像这样: UPD: public class LabelTest extends JFrame { public LabelTest() { setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
JLabel
在其边界的中间绘制文本。例如,如果标签的height
为20,font-height
为14,Y
坐标将为(20-14)/2=3
。像这样:
如果要将文本与JLabel
边界的顶部对齐,应该怎么做?像这样:
UPD:
public class LabelTest extends JFrame {
public LabelTest() {
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
setSize(500, 500);
setLocationRelativeTo(null);
JPanel contentPanel = new JPanel();
contentPanel.setLayout(new BoxLayout(contentPanel, BoxLayout.X_AXIS));
contentPanel.add(Box.createHorizontalStrut(10));
final JLabel label1 = new JLabel("JLabel");
label1.setVerticalAlignment(SwingConstants.TOP); // by the answer of Kevin Workman, doesn't help
label1.setBorder(BorderFactory.createLineBorder(Color.RED));
label1.setFont(new Font("Arial", Font.PLAIN, 14));
contentPanel.add(label1);
setContentPane(contentPanel);
setVisible(true);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
new LabelTest();
}
});
}
}
一如既往,API是您最好的朋友:
编辑-根据更新的SSCCE,问题在于BoxLayout正在将JLabel缩小到最大,因此垂直文本位置并不重要。尝试使用边界布局来检查这一点
问题是JLabel的插图在JLabel的顶部和底部添加了一个小空间,因此即使文本位于顶部,文本看起来也居中。这里有一个针对insets问题的修复方法:一如既往,API是您最好的朋友:
编辑-根据更新的SSCCE,问题在于BoxLayout正在将JLabel缩小到最大,因此垂直文本位置并不重要。尝试使用边界布局来检查这一点
问题是JLabel的插图在JLabel的顶部和底部添加了一个小空间,因此即使文本位于顶部,文本看起来也居中。这里有一个针对insets问题的修复方法:一如既往,API是您最好的朋友:
编辑-根据更新的SSCCE,问题在于BoxLayout正在将JLabel缩小到最大,因此垂直文本位置并不重要。尝试使用边界布局来检查这一点
问题是JLabel的插图在JLabel的顶部和底部添加了一个小空间,因此即使文本位于顶部,文本看起来也居中。这里有一个针对insets问题的修复方法:一如既往,API是您最好的朋友:
编辑-根据更新的SSCCE,问题在于BoxLayout正在将JLabel缩小到最大,因此垂直文本位置并不重要。尝试使用边界布局来检查这一点
问题是JLabel的插图在JLabel的顶部和底部添加了一个小空间,因此即使文本位于顶部,文本看起来也居中。这里有一个解决插入问题的方法:您应该将框架打包。如果这样做,则标签中不应有未使用的空间。如果需要空白,请使用空白边框
label.setBorder(new EmptyBorder(0, 0, 5, 0));
top, left, bottom, right
另外,不要设置尺寸,使用布局管理器,让它们为您调整尺寸。设置大小将为您提供帮助。设置大小会给你一个僵硬的外观,在不同的平台上可能会有不同的外观和表现。布局管理器将使您的GUI更加流畅,能够适应不同的环境
有关使用布局的详细信息,请参见
也看到
您应该打包框架。如果这样做,则标签中不应有未使用的空间。如果需要空白,请使用空白边框
label.setBorder(new EmptyBorder(0, 0, 5, 0));
top, left, bottom, right
另外,不要设置尺寸,使用布局管理器,让它们为您调整尺寸。设置大小将为您提供帮助。设置大小会给你一个僵硬的外观,在不同的平台上可能会有不同的外观和表现。布局管理器将使您的GUI更加流畅,能够适应不同的环境
有关使用布局的详细信息,请参见
也看到
您应该打包框架。如果这样做,则标签中不应有未使用的空间。如果需要空白,请使用空白边框
label.setBorder(new EmptyBorder(0, 0, 5, 0));
top, left, bottom, right
另外,不要设置尺寸,使用布局管理器,让它们为您调整尺寸。设置大小将为您提供帮助。设置大小会给你一个僵硬的外观,在不同的平台上可能会有不同的外观和表现。布局管理器将使您的GUI更加流畅,能够适应不同的环境
有关使用布局的详细信息,请参见
也看到
您应该打包框架。如果这样做,则标签中不应有未使用的空间。如果需要空白,请使用空白边框
label.setBorder(new EmptyBorder(0, 0, 5, 0));
top, left, bottom, right
另外,不要设置尺寸,使用布局管理器,让它们为您调整尺寸。设置大小将为您提供帮助。设置大小会给你一个僵硬的外观,在不同的平台上可能会有不同的外观和表现。布局管理器将使您的GUI更加流畅,能够适应不同的环境
有关使用布局的详细信息,请参见
也看到
谢谢,但是没有帮助。我已经编写了label1.setVerticalAlignment(SwingConstants.TOP),但是我仍然看到JLabel与附件中的第一张图片类似。然后你需要发布一篇演示你所做的事情的文章,因为setVerticalAlignment()方法对我来说非常有效。SSCCE
附在UPD部分谢谢。更新了我的答案以解释发生了什么。谢谢,但没有,这没有帮助。我已经编写了label1.setVerticalAlignment(SwingConstants.TOP),但我仍然看到JLabel与所附的第一张图片类似。然后你需要发布一篇演示你所做的事情的文章,因为setVerticalAlignment()方法对我来说非常有效。SSCCE
附在UPD部分,谢谢。更新了我的答案以解释发生了什么。谢谢,但没有,这没有帮助。我已经编写了label1.setVerticalAlignment(SwingConstants.TOP),但我仍然看到JLabel与所附的第一张图片类似。然后你需要发布一篇演示你所做的事情的文章,因为setVerticalAlignment()方法对我来说非常有效。SSCCE
附在UPD部分,谢谢。更新了我的答案以解释发生了什么。谢谢,但没有,这没有帮助。我已经编写了label1.setVerticalAlignment(SwingConstants.TOP),但我仍然看到JLabel与所附的第一张图片类似。然后您需要发布一篇演示您所做工作的文章,因为setVerticalAlignment()方法在