Как я могу добавить отступы в поле jtextfield - PullRequest
20 голосов
/ 09 января 2012

Как я могу добавить некоторые отступы в поле jtext?Я пробовал tf.setMargin(new Insets(5,5,5,5));, который не имеет никакого эффекта.

Ответы [ 5 ]

33 голосов
/ 09 января 2012

Проблема, с которой вы столкнулись, заключается в том, что пользовательский интерфейс устанавливает собственную границу для текстового поля, переопределяя установленное вами поле.Вы можете увидеть предупреждение об этом эффекте в javadoc: setMargin().

. Решение состоит в том, чтобы пользовательский интерфейс установил границу, а затем втиснул другую собственную границу:

field.setBorder(BorderFactory.createCompoundBorder(
        field.getBorder(), 
        BorderFactory.createEmptyBorder(5, 5, 5, 5)));
4 голосов
/ 09 января 2012

вы посмотрите на CompoundBorder , там вы можете установить LineBorder(Color.gray, 1) и с

EmptyBorder(5, 5, 5, 5)
2 голосов
/ 10 мая 2016

Самый простой способ - BorderFactory

field.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5));
1 голос
/ 02 декабря 2018

Я знаю, что это уже слишком поздно, но на самом деле, если вы хотите, чтобы в Java был единообразный внешний вид, вам следует отредактировать пользовательский интерфейс, чтобы каждое текстовое поле, которое вы создаете, не нуждалось в своих специальныхкод.Итак, взяв пример Рассела Захнисера выше:

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

UIManager.setBorder("TextField.border", newBorder);
0 голосов
/ 01 июня 2018

Вы можете применить это к текстовому полю, уже созданному с рамкой

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