具有半透明JTextArea的工件

时间:2014-10-11 08:46:00

标签: java swing transparency jtextarea

我尝试在图像上制作半透明JTextArea,但是当文字写在上面时,有时我会在最后一个字母后面出现恼人的矩形,如果我用鼠标点击文字,这个矩形会出现。

我试图以这种方式提高透明度:

textArea.setBackground(new Color(0, 0, 0, 200));

我也试过setOpaque(false),这不是我想要的,但矩形不会出现。

这里是工件的例子:

image

1 个答案:

答案 0 :(得分:3)

Swing只知道如何绘制完全不透明或完全透明的组件,当Swing遇到半透明颜色的组件时,它不知道它需要在其下面绘制组件,你必须作弊。

首先将颜色设置为完全不透明的值(Color.BLACK)。创建一个从JTextArea延伸的新类,将其不透明属性设置为false,覆盖它的paintComponent方法,使用AlphaComposite填充JTextArea后台,使用Graphics#fillRect,然后致电super.paintComponent,确保首先重置AlphaComposite

例如JTextArea not selectable, but still showing a "ghost" cursor