How can I add some padding to a jtextfield?
I\'ve tried tf.setMargin(new Insets(5,5,5,5));
which doesn\'t have any effect.
yourTextFeildVariable.setBorder(BorderFactory.createCompoundBorder(yourTextFeildVariable.getBorder(), BorderFactory.createEmptyBorder(0, 5, 0, 0)));
This is working 100%
You can apply this to a textbox already created with a border
jTextField1.setBorder(BorderFactory.createCompoundBorder(jTextField1.getBorder(), BorderFactory.createEmptyBorder(6, 6, 6, 6)));
you have look at CompoundBorder, there you can set LineBorder(Color.gray, 1)
and with
EmptyBorder(5, 5, 5, 5)
The problem you are having is that the UI is setting its own border on the text field, overriding the margin you set. You can see a warning to this effect in the javadoc of setMargin()
.
The solution is to let the UI set a border, then squeeze in another border of your own:
field.setBorder(BorderFactory.createCompoundBorder(
field.getBorder(),
BorderFactory.createEmptyBorder(5, 5, 5, 5)));
The simplest way is using BorderFactory
field.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5));
I know this is years too late, but actually, if you want a consistent look and feel in Java, you should be editing the UI so every text field you create doesn't need its own special code. So, taking from Russel Zahniser's example above:
Border tfBorder = UIManager.getBorder("TextField.border");
Border newBorder = BorderFactory.createCompoundBorder(tfBorder,
BorderFactory.createEmptyBorder(5, 5, 5, 5)));
UIManager.setBorder("TextField.border", newBorder);