とにかくJTextField
の境界線を削除する方法はありますか?
txt = new JTextField();
txt.setBorder(null); // <-- this has no effect.
私は本当にJLabel
のように見せたいです-しかし、人々がそれを強調表示できるようにしたいので、私はそれをJTextField
にする必要があります。
以前の回答 質問 から、一部のPL&Fが国境を壊す可能性があることがわかります。
したがって、明白な解決策は、PL&Fが呼び出しているsetBorder
メソッドをオーバーライドして、変更を破棄することです。
JTextField text = new JTextField() {
@Override public void setBorder(Border border) {
// No!
}
};
JTextField textField = new JTextField();
textField.setBorder(javax.swing.BorderFactory.createEmptyBorder());
http://Java.Sun.com/javase/6/docs/api/javax/swing/BorderFactory.html
ボーダーを「null」に設定する場合、ルックアンドフィールには、オペレーティングシステムの(存在する場合)ネイティブのボーダースタイルを使用するように指示しています。
NullではなくBorderFactory.createEmptyBorder()に設定してみてください。 nullに設定すると実際には異なる意味を持つため、これは「トリックを実行する」ことがあります。
それが機能しない場合は、使用しているルックアンドフィールが何かを上書きしている可能性があります。デフォルトまたは何かカスタムを使用していますか?
いいえ、境界線を削除することはできません。特にAWTコンポーネントの表示について。ネイティブウィジェットセットを使用します(Javaの外部で描画されます)。
背景に似た線を作ってみてください。たとえば、背景が白の場合、次のことを行う必要があります。
setBorder(BorderFactory.createLineBorder(Color.white));
次に、背景を白に設定します。
setBackground(Color.white);
txt.setBorder(new LineBorder(Color.BLACK,0));
うまくいくかもしれません。