とにかく境界線を削除することはありJTextField
ますか?
txt = new JTextField();
txt.setBorder(null); // <-- this has no effect.
私は本当にそれを-のように見せたいと思いますが、人々がそれを強調できるようにしたいのでJLabel
、それでもそれが必要です。JTextField
とにかく境界線を削除することはありJTextField
ますか?
txt = new JTextField();
txt.setBorder(null); // <-- this has no effect.
私は本当にそれを-のように見せたいと思いますが、人々がそれを強調できるようにしたいのでJLabel
、それでもそれが必要です。JTextField
JTextField textField = new JTextField();
textField.setBorder(javax.swing.BorderFactory.createEmptyBorder());
http://java.sun.com/javase/6/docs/api/javax/swing/BorderFactory.html
境界線を「null」に設定すると、実際には、(オペレーティングシステムの)ネイティブ境界線スタイルがあればそれを使用するようにルックアンドフィールに指示します。
あなたの前の質問への答えから、あなたはいくつかのPL&Fが国境を壊すかもしれないことを知っています。
したがって、明らかな解決策はsetBorder
、PL&Fが呼び出しているメソッドをオーバーライドし、変更を破棄することです。
JTextField text = new JTextField() {
@Override public void setBorder(Border border) {
// No!
}
};
nullではなくBorderFactory.createEmptyBorder()に設定してみてください。nullに設定すると実際には別の意味を持つため、これが「うまくいく」場合があります。
それが機能しない場合は、使用しているルックアンドフィールが何かをオーバーライドしている可能性があります。デフォルトまたはカスタムのものを使用していますか?
いいえ、境界線を削除することはできません。特にAWTコンポーネントの表示について。それらはネイティブウィジェットセットを使用します(Javaの外部で描画されます)。
背景に似た線を作成してみてください...たとえば、背景が白の場合は、次のことを行う必要があります。
setBorder(BorderFactory.createLineBorder(Color.white));
次に、背景を白に設定します。
setBackground(Color.white);
txt.setBorder(new LineBorder(Color.BLACK,0));
うまくいくかもしれません。
あなたは簡単にできます
textField.setBorder(null);
また
textField.setBorder(new EmptyBorder(0, 0, 0, 0))
すべての状況で機能させる唯一の方法は、次の設定です。
setBorder (BorderFactory.createLineBorder (new Color (0, 0, 0, 0), 2));
それ以外の場合(親コンテナの背景がnullの場合)、JTextFieldの左端に「I」カーソルが永久に残ります。(境界線の太さを変えてテストを行い、最初にアクティブにしたときにJTextFieldがカーソルを配置する非常に奇妙な方法を観察してください。)
または、次のように設定できます。
setBorder (BorderFactory.createLineBorder (getBackground (), 2));
ただし、4方向すべてで光学的に2ピクセル大きいフィールドが得られます。境界線の太さを指定しない場合、この境界線とフィールドの間にカーソルが永久に残ります。