java - 工具提示消失后如何重新绘制?

标签 java swing applet tooltip paint

我创建了一个小程序,它有一个大面板来显示被多个控件(按钮、文本字段等)包围的数据。大面板包含我自己渲染的几层标签。

所有控件都有与其关联的工具提示,其中一些工具提示与主面板重叠。当它们消失时,它们会在主面板图像中留下一个洞,直到重新绘制主面板。

请注意,这并不总是会发生。只有当光标在一定范围内时才会发生。如果您向左或向右移动得足够远(沿 Y 轴的变化没有差异),当工具提示消失时,孔将被涂上。

我不太了解工具提示和重绘应该如何工作,如果这是我的程序出现严重错误的迹象,但如果我可以在工具提示消失时在主面板上调用重绘,我应该没事。我可以在工具提示中覆盖某些内容来实现这一点吗?

我正在使用 Swing

谢谢。

最佳答案

回答您的问题(在您通过评论找到解决方案之后):Swing 内置了一些非常精细的重绘管理。当工具提示消失时,它下方的矩形将被重绘。

现在,哪些组件必须重新绘制?所有那些与给定矩形重叠,并且本身没有被其他组件隐藏(在相关区域中)的组件 - 但只有不透明组件才算在这里。 (这就是我们需要 JComponent 上的 opaque 属性的全部原因 - 以优化重绘。)

您的标签声明自己是不透明的,但并没有真正在 paintComponent 上绘制它的整个区域,因此本应被标签覆盖的工具提示区域仍未绘制。

将您的标签声明为部分透明还会导致重新绘制其后面组件的相关区域。

关于java - 工具提示消失后如何重新绘制?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5706894/

相关文章:

java - Applet AWT Canvas 不更新图形

java - 使用 Marathon 部署 Mesos 集群

java - 如何在 thymeleaf 中包含 message.properties

java - 如何使用glassPane创建透明窗口?

java - 将 MouseListener 添加到图形对象

java - 我的 JTextArea 继续无限,尽管添加了 LineWrap 等

java - 一些扩展小程序的代码

java - 这两种初始化静态变量的方式有什么区别?

java - 将对象传递给链表中的下一个元素

Java- AWT Applets- 如何更改程序中形状的大小?