关注javaswing

关注javaswing,java,swing,user-interface,Java,Swing,User Interface,我正在使用JavaSwing开发一个应用程序。当我点击一个按钮时,我想打开另一个窗口。这个很好用。但是,即使在新窗口打开后,也可以将alt+tab切换到原始窗口,然后与之交互。有没有办法不让用户在新窗口出现后聚焦原始窗口?通过窗口,我指的是Jframe/Jdialog。您可以尝试使用Jdialog而不是Jframe,并将Jframe的实例传递给Jdialog构造函数 您也可以尝试检查 frame.setAlwaysOnTop(true); 或者可能是这样的:- frame.toFront()

我正在使用JavaSwing开发一个应用程序。当我点击一个按钮时,我想打开另一个窗口。这个很好用。但是,即使在新窗口打开后,也可以将alt+tab切换到原始窗口,然后与之交互。有没有办法不让用户在新窗口出现后聚焦原始窗口?通过窗口,我指的是Jframe/Jdialog。

您可以尝试使用Jdialog而不是Jframe,并将Jframe的实例传递给Jdialog构造函数

您也可以尝试检查

 frame.setAlwaysOnTop(true);
或者可能是这样的:-

frame.toFront();
frame.setState(Frame.NORMAL); 
您可以尝试使用JDialog而不是JFrame,并将JFrame的实例传递给JDialog构造函数

您也可以尝试检查

 frame.setAlwaysOnTop(true);
或者可能是这样的:-

frame.toFront();
frame.setState(Frame.NORMAL); 

假设主JFrame窗口的实例名为mainWindow:,以下代码将阻止切换焦点

// the second parameter makes the dialog modal and will prevent
// switching the focus to the mainWindow
JDialog dialog = new JDialog(mainWindow, true);
...
dialog.setVisible(true);

JDialog上的文档:

假设主JFrame窗口的实例名为mainWindow:,以下代码将阻止切换焦点

// the second parameter makes the dialog modal and will prevent
// switching the focus to the mainWindow
JDialog dialog = new JDialog(mainWindow, true);
...
dialog.setVisible(true);

关于JDialog的文档:

打开JDialog作为第二个窗口,而不是JFrame,并将JFrame的实例传递给JDialog的构造函数,然后向我们展示代码。模态JDialog肯定会阻止对焦父窗口。我想我做不到。我正在使用netbeans编辑器拖放项目。它根本不允许我修改生成的代码。NetBeans不会生成打开另一个窗口的代码。大多数生成的代码都可以使用组件的属性进行修改。不确定再次调用构造函数是什么意思,但很可能是做错了什么,特别是如果您真的调用了两次。同样:您可以自定义生成的代码-使用组件属性窗口中的代码选项卡。打开JDialog作为第二个窗口,而不是JFrame,并将JFrame的实例传递给JDialog的构造函数,然后显示您的代码。模态JDialog肯定会阻止对焦父窗口。我想我做不到。我正在使用netbeans编辑器拖放项目。它根本不允许我修改生成的代码。NetBeans不会生成打开另一个窗口的代码。大多数生成的代码都可以使用组件的属性进行修改。不确定再次调用构造函数是什么意思,但很可能是做错了什么,特别是如果您真的调用了两次。再次声明:您可以自定义生成的代码-使用组件属性窗口中的代码选项卡。第一次不起作用,因为我没有传递布尔值true。现在工作。谢谢。第一次不起作用,因为我没有传递布尔值true。现在工作。非常感谢。