2012-08-13 5 views
6

こんにちは私は2つのテキストフィールドを配置した1つのスイングフレームを用意しました。 jtextfieldの色の片側(つまり、右の枠線)を取得する方法はありますか?提案してください。私は多くのことをチェックしましたが、見つけられませんでした。事前に感謝します。jtextfieldの片側(つまり、右の枠線)を得る方法はありますか?

答えて

8

は私がテキストフィールドに境界線を追加した後、あなたは、の線に沿って何かしているものです私は願っています

jtf.setBorder(BorderFactory.createMatteBorder(0, 0, 0, 5, Color.BLACK)); 

:sが右側の境界線でありますアプローチは古い境界線を保持し、赤色(部分)境界線の内側に囲みます。

+0

他の回答よりもきれいです。 – brimborium

+0

ありがとう、ジェイコブ。私はマットボーダーのみを適用するので、テキストフィールドは元のボーダーも消えていて、片側の赤いボーダーしか表示せず、テキストフィールドではなくラインのように見えます。しかし、あなたの答えはそのシナリオを避けました。 – Kanth

4

Borderクラスから拡張して、独自のカスタムボーダーを作成することで、独自のクラスを作成できます。私は5つのピクセルの左側の境界線を追加して、以下の例で

+1

最後に**疑問符**が表示されるのはなぜですか?これは意味をなさない。 +1のカスタムボーダーの場合: –

+0

LOLそれは疑問のある提案でした:) –

+1

スニペットを提供している間は、** i/i1/i2/i3 **の代わりに適切な名前を使用する方が賢明です。 * int x、int y、int width、int height **、それ以上の思考なしにメッセージを伝えるように:-) –

8

class MyBorder implements Border { 

    @Override 
    public void paintBorder(Component cmpnt, Graphics grphcs, int x, int y, int width, int height) { 
     //draw your border here 
    } 

    @Override 
    public Insets getBorderInsets(Component cmpnt) { 
     throw new UnsupportedOperationException("Not supported yet."); 
    } 

    @Override 
    public boolean isBorderOpaque() { 
     throw new UnsupportedOperationException("Not supported yet."); 
    } 

} 

参考:あなたのComponentのインスタンス何かのようにsetBorder()を呼び出すことによって、それを設定します。

JTextField jtf = new JTextField();   
jtf.setBorder(BorderFactory.createMatteBorder(0, 5, 0, 0, Color.BLACK)); 

thi

Border oldBorder = jTextField.getBorder(); 
Border redBorder = BorderFactory.createMatteBorder(0, 0, 0, 5, Color.RED); 
Border newBorder = BorderFactory.createCompoundBorder(redBorder, oldBorder); 
jTextField.setBorder(newBorder); 

これを:これは

関連する問題