将水印添加到JTextArea
它们是一种向JTextArea添加水印的方法吗?
我怀疑您需要super.paintComponent()
JTextArea
并覆盖paintComponent()
方法,首先绘制背景图像并调用super.paintComponent()
来呈现文本:
public void paintComponent (Graphics g) { g.drawImage(watermark, 0, 0, this); super.paintComponent(g); }
编辑:正如camickr所指出的, JTextArea
是不透明的,所以你的子类需要通过调用setOpaque(false)
来改变它。
我怀疑上面提出的建议是否奏效。 JTextArea是不透明的,因此文本将在图像的顶部绘制。 因此,至少您需要使文本区域非灰色,然后您需要使用视口和/或滚动窗格的背景颜色。
如果您想要一个可重用的解决方案,请尝试创建一个ImageBorder。 绘画的顺序是:
a)paintComponent
b)paintBorder
c)paintChildren
因此,如果您将边框添加到文本区域,它将在固定位置的文本顶部绘制。
或者,如果将边框添加到视口,它将在文本下方绘制一个浮动位置。
您也可以考虑使用可以创建非常复杂的视觉效果的JXLayer