我目前正在参与一门大学课程的小组项目,遇到了一些困难。我们决定实现一个点对点聊天客户端,并使用中央服务器来存储和共享用户名等信息。我被分配负责GUI界面。
一个朋友开玩笑建议我加入“燃烧的背景!”,所以我决定这样做,但让用户选择背景图片。由于所有组件都在顶部,因此只有背景图像的部分会可见,因此我决定尝试实现半透明度。
这就是我的问题所在:
当将输入框中的信息发送到聊天窗口时,或者导航好友列表或滚动聊天窗口时,会留下奇怪的伪影。这些伪影有时是透明的“幽灵”发送按钮,有时是菜单的一部分,或旧文本。在我看来,整个框架没有得到正确地重绘,但我不确定它是如何工作的。
对于实现JTextComponent的组件,我将它们的选择颜色设置为半透明颜色。对于其他组件,我将背景设置为半透明。我有一个函数setTranslucency(Component com),它查看一个组件,根据它是什么设置其半透明度,然后查看它是否是某种容器并递归地设置每个项目的半透明度。
现在,我发现解决此问题的方法是将窗口拖出视线范围(例如最小化或将窗口拖到屏幕外并返回)。
所以,
1)是否有一种方法可以强制整个窗口更新,就像我将其拖到屏幕外或将其最小化时那样?
或者,
2)首先我做错了吗?如果是这样,我该如何修复它?
这是一个参考图片:
一个朋友开玩笑建议我加入“燃烧的背景!”,所以我决定这样做,但让用户选择背景图片。由于所有组件都在顶部,因此只有背景图像的部分会可见,因此我决定尝试实现半透明度。
这就是我的问题所在:
当将输入框中的信息发送到聊天窗口时,或者导航好友列表或滚动聊天窗口时,会留下奇怪的伪影。这些伪影有时是透明的“幽灵”发送按钮,有时是菜单的一部分,或旧文本。在我看来,整个框架没有得到正确地重绘,但我不确定它是如何工作的。
对于实现JTextComponent的组件,我将它们的选择颜色设置为半透明颜色。对于其他组件,我将背景设置为半透明。我有一个函数setTranslucency(Component com),它查看一个组件,根据它是什么设置其半透明度,然后查看它是否是某种容器并递归地设置每个项目的半透明度。
现在,我发现解决此问题的方法是将窗口拖出视线范围(例如最小化或将窗口拖到屏幕外并返回)。
所以,
1)是否有一种方法可以强制整个窗口更新,就像我将其拖到屏幕外或将其最小化时那样?
或者,
2)首先我做错了吗?如果是这样,我该如何修复它?
这是一个参考图片: