web-dev-qa-db-ja.com

jtextfieldにパディングを追加するにはどうすればよいですか

Jtextfieldにパディングを追加するにはどうすればよいですか? tf.setMargin(new Insets(5,5,5,5));を試しましたが、効果はありません。

22
fenerlitk

あなたが抱えている問題は、UIがテキストフィールドに独自の境界線を設定し、設定したマージンを上書きしていることです。この影響に対する警告は、setMargin()のjavadocで確認できます。

解決策は、UIに境界線を設定させてから、独自の別の境界線を押し込むことです。

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

CompoundBorder を見て、そこでLineBorder(Color.gray, 1)を設定できます。

EmptyBorder(5, 5, 5, 5)
4
mKorbel

最も簡単な方法は、BorderFactoryを使用することです

field.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5));
2
spencer.sm

これは遅すぎることはわかっていますが、実際には、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);
1
JMorgan