我必须创建一个特殊的TextFieldUI,将图像绘制为背景。该图像包含一些alpha分量。但是,只要在该文本字段中写入字符,首先它会重绘背景然后绘制字符。当背景不包含alpha分量时,这很好,但是在输入几个字符后,alpha区域总和变为黑色。
我能看到的唯一方法是在TextfieldUI的paintBackground方法中(我要覆盖),我必须首先在该位置采样背景的颜色,绘制整个图形组件的颜色,然后画我的背景。
当我有权访问的是Graphics对象时,是否有人知道如何对像素的颜色进行采样?
除了覆盖TextfieldUI中的paintBackground之外,还有更好的方法将自定义图像绘制为文本字段背景吗?
由于
答案 0 :(得分:1)
我之前没有尝试过,但是Swing是建立在AWT之上的,Robot类有一种方法可以在AWT中对特定像素进行采样
答案 1 :(得分:0)
好吧,我不知道你的自定义代码在paintBackground方法中是什么样的,但我会确保你在绘制图像之前填写文本字段背景。
我会让你决定它是否“更好”,但你可以使用Background Panel,它允许你将图像添加到面板。然后将文本字段添加到面板(文本字段自动变为非不透明,以便显示图像)。然后将面板添加到GUI。
如果这不起作用,那么最好有一个代码演示,以便我们可以看到实际发生的事情。
答案 2 :(得分:0)
当你覆盖paintBackground时,你首先调用超类版本,对吧?它已经奠定了一个背景颜色矩形,可以让你的图像重新开始。
它不是“采样”背景颜色,而是可能已经正确(超类paintBackground代码从父组件获取它,如果不是本地设置的话)。如果该默认值不正确,请在初始界面构造中进行设置。 (你的领域没有被覆盖在未知纯色的其他复杂的任意界面上,是吗?)