How can I add padding to a jtextfield

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)));