Java 如何向jtextfield添加填充

Java 如何向jtextfield添加填充,java,swing,user-interface,padding,jtextfield,Java,Swing,User Interface,Padding,Jtextfield,如何向jtextfield添加一些填充? 我试过tf.setMargin(新的插图(5,5,5,5))没有任何效果。您已经看到了,您可以在那里设置线条边框(Color.gray,1)和 EmptyBorder(5, 5, 5, 5) 您遇到的问题是UI在文本字段上设置了自己的边框,覆盖了您设置的边距。您可以在setMargin()的javadoc中看到有关此效果的警告 解决方案是让UI设置一个边框,然后挤压另一个您自己的边框: field.setBorder(BorderFactory.cre

如何向jtextfield添加一些填充? 我试过
tf.setMargin(新的插图(5,5,5,5))没有任何效果。

您已经看到了,您可以在那里设置
线条边框(Color.gray,1)

EmptyBorder(5, 5, 5, 5)

您遇到的问题是UI在文本字段上设置了自己的边框,覆盖了您设置的边距。您可以在
setMargin()
的javadoc中看到有关此效果的警告

解决方案是让UI设置一个边框,然后挤压另一个您自己的边框:

field.setBorder(BorderFactory.createCompoundBorder(
        field.getBorder(), 
        BorderFactory.createEmptyBorder(5, 5, 5, 5)));

最简单的方法是使用
BorderFactory

field.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5));

您可以将此应用于已创建的带有边框的文本框

jTextField1.setBorder(BorderFactory.createCompoundBorder(jTextField1.getBorder(), BorderFactory.createEmptyBorder(6, 6, 6, 6)));

我知道这已经晚了很多年,但实际上,如果你想在Java中获得一致的外观和感觉,你应该编辑UI,这样你创建的每个文本字段就不需要自己的特殊代码。因此,从上面Russel Zahniser的例子来看:

Border tfBorder = UIManager.getBorder("TextField.border");
Border newBorder = BorderFactory.createCompoundBorder(tfBorder, 
        BorderFactory.createEmptyBorder(5, 5, 5, 5)));

UIManager.setBorder("TextField.border", newBorder);
这是工作100%

yourTextFeildVariable.setBorder(BorderFactory.createCompoundBorder(yourTextFeildVariable.getBorder(), BorderFactory.createEmptyBorder(0, 5, 0, 0)));