我正在从事的一个Java项目在Java3d和Swing工具提示之间出现了奇怪的冲突。
我们的程序在中央设置了一个Java3D Canvas3D,周围环绕着Swing JComponents (按钮、滑块、文本框等)。键盘和鼠标用于在3d世界中移动,按钮允许进行其他操作。
问题是,只要来自Swing组件的工具提示延伸到我们的窗口( JFrame)之外,Java3D中的移动就会变得缓慢,并且会出现严重的卡顿问题。
我们最初的解决方案是覆盖每个组件的getToolTipLocation()方法,以确保工具提示留在我们的窗口内。这似乎在很大程度上是有效的,但它将工具提示留在了奇怪的位置。此外,我们偶尔会在程序启动时和在生成任何工具提示之前(每20-30次启动)得到卡顿/减速问题。
然后昨天我发现了一种更奇怪的修复方法。通过在我们使用的每种类型的组件中覆盖createToolTip (),我们可以调用setPreferedSize()并确保所有工具提示都是151像素宽。
有谁知道是什么导致了这种奇怪的行为,以及我可以尝试修复它的方法吗?
发布于 2011-06-10 16:26:27
为了解决重量级/轻量级混合问题,我总是选择以下关于JPopupMenu和ToolTip的设置:
import javax.swing.JPopupMenu;
import javax.swing.ToolTipManager;
ToolTipManager ttManager = ToolTipManager.sharedInstance();
ttManager.setEnabled(true);
ttManager.setLightWeightPopupEnabled(false);
JPopupMenu.setDefaultLightWeightPopupEnabled(false);你也实现了这一点吗?或者它有帮助吗?
八月,InteractiveMesh
https://stackoverflow.com/questions/6300274
复制相似问题