答案 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