Java 将JFrame设置为始终在顶部,并禁用其后面的所有JFrame

Java 将JFrame设置为始终在顶部,并禁用其后面的所有JFrame,java,swing,jframe,always-on-top,Java,Swing,Jframe,Always On Top,我的项目有两个框架,第一个是我的主框架,第二个是只有单击按钮才能看到的框架 单击按钮时显示jframe.class 这是我执行的按钮操作中的代码 private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) { jframe jf = new jframe(); jf.setVisible(true);

我的项目有两个框架,第一个是我的主框架,第二个是只有单击按钮才能看到的框架

单击按钮时显示jframe.class

这是我执行的按钮操作中的代码

  private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
       jframe jf = new jframe();
          jf.setVisible(true);
          jf.setAlwaysOnTop(true);
    }  
这段代码可以工作,但问题是我希望主帧禁用或不可点击,而第二帧是可见的


我可以用JOptionPane的相同概念来做吗?

您实际上是在谈论模态。应使用JDialog并将模态设置为true,同时将JFrame作为参数传入:

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt){
    myFrame = new JFrame("Hello World");
    modal = new JDialog(myFrame, "This is a modal!", true);
    modal.setVisible(true);
    modal.setLocationRelativeTo(null); //Center the modal
}
您可以在此处找到更多文档:


您实际上是在谈论模态。应使用JDialog并将模态设置为true,同时将JFrame作为参数传入:

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt){
    myFrame = new JFrame("Hello World");
    modal = new JDialog(myFrame, "This is a modal!", true);
    modal.setVisible(true);
    modal.setLocationRelativeTo(null); //Center the modal
}
您可以在此处找到更多文档:


看,也许你不明白答案,但这与许多人对这一要求给出的答案是一样的。这显然很合适。如果您遵循我在评论中提供的链接,您可能会注意到它还提到(在许多其他可能性中)模态对话框。事实上,我有一个主jframe,如果鼠标不移动,它将自动显示登录表单并禁用主jframe。希望你明白我的意思。。对不起,我的英语不好:-)请提供显示登录表单创建的代码。同时更新您的问题。目前,您的问题的表述方式是,您希望能够打开一个JFrame,同时禁用/不可单击另一个JFrame。如果禁用,您的意思是您根本不希望它显示,只需将其可见性设置为false。谢谢。在多次尝试之后,它帮助我理解了JDialog模型是什么。也许您不理解答案,但它与许多人对此需求给出的答案是一样的。这显然很合适。如果您遵循我在评论中提供的链接,您可能会注意到它还提到(在许多其他可能性中)模态对话框。事实上,我有一个主jframe,如果鼠标不移动,它将自动显示登录表单并禁用主jframe。希望你明白我的意思。。对不起,我的英语不好:-)请提供显示登录表单创建的代码。同时更新您的问题。目前,您的问题的表述方式是,您希望能够打开一个JFrame,同时禁用/不可单击另一个JFrame。如果禁用,您的意思是您根本不希望它显示,只需将其可见性设置为false。谢谢。经过多次尝试,它帮助我理解了什么是JDialog模型。