我有一个组件。组件的工具提示由setToolTipText()方法设置。在第一台显示器上一切正常。现在,当我将框架移动到第二个监视器时,工具提示显示在监视器的边缘(在监视器的一侧)。这只发生在此组件的工具提示中。问题也出现在其他机器上。然而,我只用Vista测试过它。
这是为什么? 这是Swing中的错误吗? 我该如何解决?
工具提示文本取决于鼠标光标位置。因此,我可以编辑代码并覆盖getToolTipText(MouseEvent e)方法。在开始更改代码之前,了解这个问题的原因真是太好了。
提前致谢。
答案 0 :(得分:7)
Java bug数据库中有几个错误票据,似乎与此有关。
Tooltip issue when using dual monitor (dual head) configuration.
JToolTip in JApplet will place tooltip in wrong monitor
Problem with Action button tooltips with some multiple monitor configurations
On被关闭为另一个的副本,一个声称是固定的,另一个具有修复理解集。
某些用户发布的一种解决方法是
frame.pack();
frame.setLocation(location);
frame.setLocation(new Point(0, 0));
frame.setLocation(location);
<强> kieron.wilkinson 强>
这是有效的原因
setLocation()
最终会打电话 反过来Component.reshape()
调用一个叫做的方法Component.notifyNewBounds(boolean resized, boolean moved)
,哪个 横穿组件层次结构 设置每个组件边界。通过 默认这是“懒惰”完成但是 在窗口之前没有设置它们 移动。上面的代码强制它们 设定。
这也是将窗口从一个屏幕拖到另一个屏幕后工具提示开始正常工作的原因。