Java 使用modal Swing时,如何在Windows PC上获得鼠标焦点?

Java 使用modal Swing时,如何在Windows PC上获得鼠标焦点?,java,windows,swing,modal-dialog,focus,Java,Windows,Swing,Modal Dialog,Focus,我需要在windows 10计算机上拖动没有键盘焦点的窗口。我的电脑上的Swing函数拒绝在同一java应用程序中的所有窗口上使用“鼠标焦点”;它们被锁在外面,不被移动或打开以供查看 最新的Swing对话框窗口控制显示;当被另一个应用程序窗口覆盖时,需要查看的任何其他窗口(帮助回答对话框)都不可用。在Mac/OSX上,鼠标焦点不是问题;所有的窗户似乎都有 当使用方便的模式摆动功能时,有没有办法在PC上获得这种“鼠标焦点” 我的应用程序中出现问题的3个窗口是: 对话框:最新的Swing对话框,包含

我需要在windows 10计算机上拖动没有键盘焦点的窗口。我的电脑上的Swing函数拒绝在同一java应用程序中的所有窗口上使用“鼠标焦点”;它们被锁在外面,不被移动或打开以供查看

最新的Swing对话框窗口控制显示;当被另一个应用程序窗口覆盖时,需要查看的任何其他窗口(帮助回答对话框)都不可用。在Mac/OSX上,鼠标焦点不是问题;所有的窗户似乎都有

当使用方便的模式摆动功能时,有没有办法在PC上获得这种“鼠标焦点”

我的应用程序中出现问题的3个窗口是:

  • 对话框:最新的Swing对话框,包含所有鼠标焦点
  • Blocker:一个JFrame或JDialog窗口,可能是也可能不是Dialog的祖先,但它是一个足够大的窗口,可以阻止Blockeee的视图
  • Blockee:具有回答对话框所需信息的人。 在这种情况下,只能在Windows 10上拖动对话框。 将所需信息移动到对话框中是唯一的答案吗? 是否有windows 10设置可以使其执行更合理? 我试着为Blockee和Blocker使用不同的线程,但没有效果

  • 对于许多情况,我发现了一个相当简单的解决方法:识别阻塞器窗口,然后在它可能是阻塞器并且不再需要时(可能是暂时的)去掉它的聚焦性

    java.awt.Frame blocker = this; // or <parent> <grandparent>, etc.
    blocker.setFocusable(false);
    
    java.awt.Frame blocker=this;//或。
    阻塞器。可设置聚焦(假);
    

    这不会使拦截器或被拦截器窗口可移动,但可以通过防止阻塞来消除问题。也许有一天在Windows 10中会有更好的解决方案。

    我从来没有遇到过拖动模态JDialog的问题。张贴您的演示问题。是的,当您打开模态JDialog时,基础JFrame无法在Windows 10上移动。或者使你的JCube更小,这样它就可以被移走,或者将信息从JFrice复制到J对话框,这样用户就不必再引用JFrice了。不幸的是,Le Blanc先生所说的看起来是正确的。我编辑了我的问题以激发更好的选择。