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