Jtextfieldにパディングを追加するにはどうすればよいですか? tf.setMargin(new Insets(5,5,5,5));
を試しましたが、効果はありません。
あなたが抱えている問題は、UIがテキストフィールドに独自の境界線を設定し、設定したマージンを上書きしていることです。この影響に対する警告は、setMargin()
のjavadocで確認できます。
解決策は、UIに境界線を設定させてから、独自の別の境界線を押し込むことです。
field.setBorder(BorderFactory.createCompoundBorder(
field.getBorder(),
BorderFactory.createEmptyBorder(5, 5, 5, 5)));
CompoundBorder を見て、そこでLineBorder(Color.gray, 1)
を設定できます。
EmptyBorder(5, 5, 5, 5)
最も簡単な方法は、BorderFactory
を使用することです
field.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5));
これは遅すぎることはわかっていますが、実際には、Javaで一貫したルックアンドフィールが必要な場合は、UIを編集する必要があるため、作成するテキストフィールドはevery独自の特別なコードを必要としません。したがって、上記のRusselZahniserの例から引用します。
Border tfBorder = UIManager.getBorder("TextField.border");
Border newBorder = BorderFactory.createCompoundBorder(tfBorder,
BorderFactory.createEmptyBorder(5, 5, 5, 5)));
UIManager.setBorder("TextField.border", newBorder);