Swing工具提示中的Java3D口吃问题

| 我正在研究的Java项目在Java3d和Swing工具提示之间有一个奇怪的冲突。 我们的程序在中间由Swing JComponent(按钮,滑块,文本框等)包围的Java3D Canvas3D中进行设置。键盘和鼠标用于在3d世界中移动,而按钮则允许其他操作。 问题是,只要来自Swing组件的工具提示延伸到我们的窗口(JFrame)之外,Java3D中的移动就会缓慢进行爬网,并且会出现严重的卡顿问题。由于我们已经阅读了有关挥杆中重量级/轻质混合的所有问题,因此我们认为这很可能是问题所在。 我们最初的解决方案是重写每个组件的getToolTipLocation()方法,以确保工具提示停留在我们的窗口内。这似乎最有效,但是却使工具提示停留在奇怪的位置。此外,我们偶尔会在程序启动后以及生成任何工具提示之前(每20-30次启动)出现口吃/减速问题。 然后昨天我发现了一种修复它的古怪方法。只要工具提示的宽度为151像素或更大,它们就不会导致减速问题超出窗口范围。任何宽度小于或等于150像素的工具提示都会在离开窗口后立即导致我们的减速/卡顿问题。通过在我们使用的每种类型的组件中覆盖createToolTip(),我们可以调用setPreferedSize()并确保所有工具提示的宽度均为151像素。当然,这种解决方法的问题在于,所有工具提示都有很多空白或被截断。 有谁知道导致这种奇怪行为的原因以及我可以尝试解决的问题?     
已邀请:
        为了解决重量级/轻型混合的问题,我始终选择与JPopupMenu和ToolTip有关的以下设置:
import javax.swing.JPopupMenu;
import javax.swing.ToolTipManager;

ToolTipManager ttManager = ToolTipManager.sharedInstance();
ttManager.setEnabled(true);
ttManager.setLightWeightPopupEnabled(false);

JPopupMenu.setDefaultLightWeightPopupEnabled(false);
您是否也执行了此操作?还是有帮助? 八月,InteractiveMesh     

要回复问题请先登录注册