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

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

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

a) 油漆组件

b) 油漆边框

c) 绘画儿童

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

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

于 2009-11-12T17:25:30.507 回答
1

您也可以考虑使用JXLayer,它可以创建相当复杂的视觉效果

于 2009-11-12T17:34:28.823 回答