问问题
1465 次
3 回答
7
我怀疑您需要子类JTextArea
化并覆盖该paintComponent()
方法,首先绘制背景图像并调用super.paintComponent()
以呈现文本:
public void paintComponent (Graphics g) {
g.drawImage(watermark, 0, 0, this);
super.paintComponent(g);
}
编辑:正如camickr所指出的, a是不透明的,所以你的子类需要通过调用来改变它。JTextArea
setOpaque(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 回答