Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to use margins and paddings with Java GridLayout

How can I keep a JLabel from displaying flush against the side of the frame? I have the same problem when using GridLayout or BoxLayout.

Here's an example where this happens:

JPanel content = new JPanel();
content.setLayout(new BoxLayout(content, BoxLayout.Y_AXIS));
content.add(new JLabel("Hello World"));

CSS has the concept of margins and padding. Does Java have similar?

I still want Left justified but with a few pixels of space between the edge and the label.

like image 581
Alison Avatar asked Nov 25 '12 01:11

Alison


2 Answers

You could set an empty border for the JLabel to move the component over a few pixels from the left edge:

label.setBorder(BorderFactory.createEmptyBorder(0, 20, 0, 0));
like image 184
Reimeus Avatar answered Sep 28 '22 04:09

Reimeus


For centered labels, try this:

content.add(new JLabel("Hello World", JLabel.CENTER));

If you're using Box, you can add space by calling,(on a vertical box):

content.add(Box.createVerticalStrut(height));
content.add(new JLabel("Hello World"));

Or for horizontal:

content.add(Box.createHorizontalStrut(width));
like image 44
Mordechai Avatar answered Sep 28 '22 05:09

Mordechai