Java 如何更改swing标签中的间隙

Java 如何更改swing标签中的间隙,java,swing,jlabel,Java,Swing,Jlabel,我创建了一些标签: leftLabel.setAlignmentX(Component.CENTER_ALIGNMENT); leftLabel.setFont(new Font(FONT, Font.PLAIN, 280)); leftLabel.setBorder(BorderFactory.createTitledBorder("aaa")); leftLabel.setText("0"); 看起来像这样: 正如你所看到的,上下有很大的差距。如何减少它?问题可能在新创建的边框的属性中。这

我创建了一些标签:

leftLabel.setAlignmentX(Component.CENTER_ALIGNMENT);
leftLabel.setFont(new Font(FONT, Font.PLAIN, 280));
leftLabel.setBorder(BorderFactory.createTitledBorder("aaa"));
leftLabel.setText("0");
看起来像这样:


正如你所看到的,上下有很大的差距。如何减少它?

问题可能在新创建的边框的属性中。这些边界有插图。这是我能想到的唯一能影响差距的东西。尝试在边框上调用一个方法,将这些插入更改为
[1,1,1,1]

您需要调整边框插入

import java.awt.Component;
import java.awt.FlowLayout;
import java.awt.Font;
import java.awt.Insets;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.SwingUtilities;
import javax.swing.border.TitledBorder;

public final class TitledBorderDemo {
    private static void createAndShowGUI(){
        JFrame frame = new JFrame();
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setLayout(new FlowLayout());
        frame.add(new TitledLabel(String.valueOf(0)));
        frame.pack();
        frame.setVisible(true);
    }

    private static class TitledLabel extends JLabel{
        private static final long serialVersionUID = 1L;
        private static final String TITLE = "aaa";

        TitledLabel(String text){
            super(text);
            setAlignmentX(Component.CENTER_ALIGNMENT);
            setFont(new Font("Arial", Font.PLAIN, 280));
            setBorder(new TitledBorder(TITLE){
                private static final long serialVersionUID = 1L;

                @Override
                public Insets getBorderInsets(Component c, Insets insets){
                    // arbitrary insets for top and bottom.
                    return new Insets(insets.top - 45, insets.left, insets.bottom - 55, insets.right);
            }});

        }
    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable(){
            @Override
            public void run() {
                createAndShowGUI();             
            }
        });
    }
}


希望这能让你朝着正确的方向开始

如果你不选择我能从一英里外读出的字体大小怎么办?抱歉randy,但是方法setAlignmentY()不存在我尝试:leftLabel.setVerticalAlignment(JLabel.TOP);leftLabel.setVerticalTextPosition(JLabel.TOP);leftLabel.setAlignmentY(顶部对齐);leftLabel.setboorder(BorderFactory.createEmptyBorder(-3/*top*/,0,0,0));但仍然没有成功问题不在边界我添加边界以显示JLabel@hudi下次我会更深入地研究我的水晶球。哇,很好的例子。这就像一个符咒,现在我需要创建一个空的borderleftLabel.setBorder(新的EmptyBorder(新的插入(-45,0,-45,0));thx+1用于。另见本节相关内容。