6

我有一个组件。组件的 ToolTip 由 setToolTipText() 方法设置。在第一台显示器上一切正常。现在,当我将框架移动到第二个监视器时,工具提示显示在监视器的边缘(在第一个监视器的一侧)。这只发生在该组件的工具提示中。该问题也出现在其他机器上。然而,我只用 Vista 测试过它。

为什么是这样?这是 Swing 中的错误吗?我该如何解决?

工具提示文本取决于鼠标光标位置。因此我可以编辑代码并覆盖 getToolTipText(MouseEvent e) 方法。在开始更改代码之前,很高兴知道这个问题的原因是什么。

提前致谢。

4

1 回答 1

7

Java bug 数据库中有几个似乎与此相关的 bug 票证,例如

使用双显示器(双头)配置时的工具提示问题。

JApplet 中的 JToolTip 会将工具提示放置在错误的监视器中

带有一些多显示器配置的操作按钮工具提示问题

On 作为另一个副本关闭,一个声称已修复,另一个已修复-理解集。

一些用户发布的一种解决方法是

frame.pack();
frame.setLocation(location);
frame.setLocation(new Point(0, 0));
frame.setLocation(location);

基隆·威尔金森

这样做的原因是 setLocation()最终调用 Component.reshape(),而后者又调用一个名为 的方法 Component.notifyNewBounds(boolean resized, boolean moved),该方法跨越组件层次结构设置每个组件的边界。默认情况下,这是“懒惰地”完成的,但在移动窗口之前没有设置它们。上面的代码强制设置它们。

This is also why the tooltips start working properly after dragging the window from one screen to another.

于 2009-11-04T10:09:08.610 回答