如何在jtextfield中添加一些填充?
我已经尝试了tf.setMargin(new Insets(5,5,5,5));
,但没有任何效果。
答案 0 :(得分:33)
您遇到的问题是UI正在文本字段上设置自己的边框,从而覆盖您设置的边距。您可以在setMargin()
的javadoc中看到此效果的警告。
解决方案是让UI设置边框,然后挤入您自己的另一个边框:
field.setBorder(BorderFactory.createCompoundBorder(
field.getBorder(),
BorderFactory.createEmptyBorder(5, 5, 5, 5)));
答案 1 :(得分:4)
你看CompoundBorder,你可以设置LineBorder(Color.gray, 1)
和
EmptyBorder(5, 5, 5, 5)
答案 2 :(得分:2)
最简单的方法是使用BorderFactory
field.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5));
答案 3 :(得分:1)
我知道这已经太晚了,但是实际上,如果您想要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);
答案 4 :(得分:0)
yourTextFeildVariable.setBorder(BorderFactory.createCompoundBorder(yourTextFeildVariable.getBorder(), BorderFactory.createEmptyBorder(0, 5, 0, 0)));
这可以100%工作
答案 5 :(得分:-1)
您可以将其应用于已使用边框
创建的文本框jTextField1.setBorder(BorderFactory.createCompoundBorder(jTextField1.getBorder(), BorderFactory.createEmptyBorder(6, 6, 6, 6)));