Reputation: 16535
I create some label:
leftLabel.setAlignmentX(Component.CENTER_ALIGNMENT);
leftLabel.setFont(new Font(FONT, Font.PLAIN, 280));
leftLabel.setBorder(BorderFactory.createTitledBorder("aaa"));
leftLabel.setText("0");
which look like this:
As you can see there are big gap up and down. How I can reduce it ?
Upvotes: 5
Views: 4358
Reputation: 6406
You need to tweak the border insets,
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();
}
});
}
}
Hopefully this gets you started in the right direction!
Upvotes: 10
Reputation: 13063
the problem is probably within the properties of the newly created border. These borders have insets. That is the only thing I can think of to influence the gaps. Try to call a method on the border that changes these insets to [1,1,1,1]
.
Upvotes: 2