将水印添加到JTextArea

时间:2009-11-12 13:40:50

标签: java swing watermark

它们是否可以watermark添加JTextArea

3 个答案:

答案 0 :(得分:7)

我怀疑您需要继承JTextArea并覆盖paintComponent()方法,首先绘制背景图片并调用super.paintComponent()来呈现文字:

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

编辑: 正如camickr所指出的那样,JTextArea是不透明的,因此您的子类需要通过以下方式更改致电setOpaque(false)

答案 1 :(得分:1)

我怀疑上面提出的建议是否奏效。 JTextArea是不透明的,因此文本将在图像顶部绘制。因此,至少你需要使文本区域不是蓝色的,然后你需要使用视口和/或滚动窗格的背景颜色。

如果您想要一个可重用的解决方案,请尝试创建一个ImageBorder。绘画的顺序是:

a)paintComponent

b)paintBorder

c)paintChildren

因此,如果您将边框添加到文本区域,它将在固定位置的文本顶部绘制。

或者,如果您将边框添加到视口,它将在文本下方绘制一个浮动位置。

答案 2 :(得分:1)

您也可以考虑使用可以创建非常复杂的视觉效果的JXLayer