问题
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.
回答1:
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)));
回答2:
you have look at CompoundBorder, there you can set LineBorder(Color.gray, 1)
and with
EmptyBorder(5, 5, 5, 5)
回答3:
The simplest way is using BorderFactory
field.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5));
回答4:
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);
回答5:
You can apply this to a textbox already created with a border
jTextField1.setBorder(BorderFactory.createCompoundBorder(jTextField1.getBorder(), BorderFactory.createEmptyBorder(6, 6, 6, 6)));
来源:https://stackoverflow.com/questions/8792651/how-can-i-add-padding-to-a-jtextfield