25

とにかく境界線を削除することはありJTextFieldますか?

txt = new JTextField();
txt.setBorder(null);   // <-- this has no effect.

私は本当にそれを-のように見せたいと思いますが、人々がそれを強調できるようにしたいのでJLabel、それでもそれが必要です。JTextField

4

7 に答える 7

70
JTextField textField = new JTextField();
textField.setBorder(javax.swing.BorderFactory.createEmptyBorder());

http://java.sun.com/javase/6/docs/api/javax/swing/BorderFactory.html

境界線を「null」に設定すると、実際には、(オペレーティングシステムの)ネイティブ境界線スタイルがあればそれを使用するようにルックアンドフィールに指示します。

于 2010-02-17T15:34:32.843 に答える
22

あなたの前の質問への答えから、あなたはいくつかのPL&Fが国境を壊すかもしれないことを知っています。

したがって、明らかな解決策はsetBorder、PL&Fが呼び出しているメソッドをオーバーライドし、変更を破棄することです。

JTextField text = new JTextField() {
    @Override public void setBorder(Border border) {
        // No!
    }
};
于 2010-02-17T15:36:02.563 に答える
3

nullではなくBorderFactory.createEmptyBorder()に設定してみてください。nullに設定すると実際には別の意味を持つため、これが「うまくいく」場合があります。

それが機能しない場合は、使用しているルックアンドフィールが何かをオーバーライドしている可能性があります。デフォルトまたはカスタムのものを使用していますか?

于 2010-02-17T15:33:57.403 に答える
3

いいえ、境界線を削除することはできません。特にAWTコンポーネントの表示について。それらはネイティブウィジェットセットを使用します(Javaの外部で描画されます)。

背景に似た線を作成してみてください...たとえば、背景が白の場合は、次のことを行う必要があります。

setBorder(BorderFactory.createLineBorder(Color.white));

次に、背景を白に設定します。

setBackground(Color.white);
于 2011-08-25T07:56:50.810 に答える
1
txt.setBorder(new LineBorder(Color.BLACK,0));

うまくいくかもしれません。

于 2013-02-03T13:18:39.570 に答える
0

あなたは簡単にできます

textField.setBorder(null);

また

textField.setBorder(new EmptyBorder(0, 0, 0, 0))

于 2021-06-02T08:19:14.813 に答える
-1

すべての状況で機能させる唯一の方法は、次の設定です。

setBorder (BorderFactory.createLineBorder (new Color (0, 0, 0, 0), 2));

それ以外の場合(親コンテナの背景がnullの場合)、JTextFieldの左端に「I」カーソルが永久に残ります。(境界線の太さを変えてテストを行い、最初にアクティブにしたときにJTextFieldがカーソルを配置する非常に奇妙な方法を観察してください。)

または、次のように設定できます。

setBorder (BorderFactory.createLineBorder (getBackground (), 2));

ただし、4方向すべてで光学的に2ピクセル大きいフィールドが得られます。境界線の太さを指定しない場合、この境界線とフィールドの間にカーソルが永久に残ります。

于 2012-03-10T10:59:22.193 に答える