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