第二个监视器上的ToolTip显示在监视器的边缘

6 java swing multiple-monitors tooltip

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

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

工具提示文本取决于鼠标光标位置.因此,我可以编辑代码并覆盖getToolTipText(MouseEvent e)方法.在开始更改代码之前,了解这个问题的原因真是太好了.

提前致谢.

jit*_*ter 7

Java bug数据库中有几个错误票据,似乎与此有关

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

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

具有多个监视器配置的"操作"按钮工具提示出现问题

On作为另一个的副本被关闭,一个声称是固定的而另一个具有固定理解的集合.

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

frame.pack();
frame.setLocation(location);
frame.setLocation(new Point(0, 0));
frame.setLocation(location);
Run Code Online (Sandbox Code Playgroud)

kieron.wilkinson

这样做的原因是 setLocation()最终calles Component.reshape()反过来调用一个被调用的方法Component.notifyNewBounds(boolean resized, boolean moved),该方法 遍历 每个组件边界的组件层次结构设置.默认情况下,这是"懒惰"完成的,但在移动窗口之前不会设置它们.上面的代码强制它们被设置.

这也是在将窗口从一个屏幕拖动到另一个屏幕后工具提示开始正常工作的原因.