0

それらはJTextAreaに透かしを追加する方法ですか?

4

3 に答える 3

7

メソッドをサブクラス化JTextAreaしてオーバーライドし、paintComponent()最初に背景画像super.paintComponent()を描画し、テキストをレンダリングするために呼び出す必要があると思います。

public void paintComponent (Graphics g) {
    g.drawImage(watermark, 0, 0, this);
    super.paintComponent(g);
}

編集: camickrで指摘されているように、 aは不透明なので、サブクラスは を呼び出してこれを変更する必要があります。JTextAreasetOpaque(false)

于 2009-11-12T13:47:21.260 に答える
1

非常に複雑な視覚効果を作成できるJXLayerの使用を検討することもできます。

于 2009-11-12T17:34:28.823 に答える
1

上記の提案がうまくいくとは思えません。JTextArea は不透明なので、テキストは画像の上に塗りつぶされます。したがって、少なくともテキスト領域を非不透明にする必要があり、ビューポートやスクロールペインの背景色をいじる必要があります。

再利用可能なソリューションが必要な場合は、ImageBorder を作成してみてください。塗装の順番は次のとおりです。

a) ペイントコンポーネント

b) paintBorder

c) paintChildren

そのため、境界線をテキスト領域に追加すると、固定位置のテキストの上に描画されます。

または、境界線をビューポートに追加すると、テキストの下がフローティング位置になります。

于 2009-11-12T17:25:30.507 に答える