将水印添加到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