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()方法在