2011-10-12 27 views
1

編集不可能なJTextFieldの中に画像を表示するには?私はこのように表示されるように、編集することはできませんJTextFieldの内部ロック画像を入れたい私のJava Swingアプリケーションで

Locked JTextField

私はJTextFieldのを作成し、その上のJLabelを挿入し、定義されていますJLabelのロックアイコン。 JTextFieldが編集可能な場合、上の画像が示すようにJLabelが表示されますが、JTextFieldが編集可能でない場合、画像はまったく表示されません。

どうすれば修正できますか?

2)resizibale ContainerにごCustom JTextFieldを入れているので、Icon

のための位置に慎重に)

+0

すぐに役立つように、[SSCCE](http://pscode.org/sscce.html)を投稿してください。 コード内に小さな画像を生成します。 –

答えて

2

setEditable(true)setEditable(false)のコンストラクタを作成します。テキストフィールドから枠線を削除し、パネルの周りに共通の枠線を追加します。背景をテキストフィールドの背景と同じに設定します。

+0

すてきなソリューションをお寄せいただきありがとうございます。それは私にとっては最も簡単でした。最終的なコンポーネントは非常に見栄えが良かった。ありがとうStanislavL。 – Brad

0

JTextFieldを拡張する独自のクラスを作成し、このクラス内で、あなたはpaintComponent(Graphics g)

1をオーバライドする必要がありますIconが正しく動作するようにしてください。Custom JTextFieldの場合はIcon

の場合は

3)あなたは、アイコンのラベル()とパネル内のテキストフィールドの両方を追加しようとすることができますIcon

1

なぜjTextPaneを使用しないのですか?

try { 
    // Get the text pane's document 
    JTextPane textPane = new JTextPane(); 
    StyledDocument doc = (StyledDocument)textPane.getDocument(); 

    // The image must first be wrapped in a style 
    Style style = doc.addStyle("StyleName", null); 
    StyleConstants.setIcon(style, new ImageIcon("imagefile")); 

    // Insert the image at the end of the text 
    doc.insertString(doc.getLength(), "ignored text", style); 
} catch (BadLocationException e) { 
} 
0

Border IconBorderと呼ぶことができます。 MatteIconのソースコードを見て、それをカスタマイズして単一の画像だけをペイントしてください。次に、テキストフィールドにBorderを追加します。

Border border = new CompoundBorder(textField.getBorder(), new IconBorder(...)); 
textField.setBorder(border); 
0

Java 7を使用していますか?次に、JLayeredPaneを使用します。

関連する問題