所以,我想知道,如何阻止用户退出或切换到应用程序中的另一个JFrame?我还没有代码,但这张图片应该足够清晰:
那些灰色方块是JFrame。它上面的数字2的框架位于顶部,我希望它保持这种状态,直到我以编程方式关闭它。任何操作,例如点击带有数字1的帧或尝试使用数字2进行任何帧外操作,都应该会再次聚焦于带有数字2的帧。
第2帧中的逻辑步骤是必不可少的,所以我想确保用户填写框架中的from。
感谢您的时间!
答案 0 :(得分:2)
如评论中所述,使用模态对话框将对象指定为所有者,在解除对话框之前,用户将无法访问该框架。
import javax.swing.*;
import javax.swing.border.EmptyBorder;
public class BlockUserFromFrame {
BlockUserFromFrame() {
JFrame f = new JFrame("Try to access frame!");
f.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
JLabel l = new JLabel("Access frame after dialog disappears!");
l.setBorder(new EmptyBorder(50, 100, 50, 100));
f.add(l);
f.pack();
f.setLocationByPlatform(true);
f.setVisible(true);
// use a constructor that allows us to specify a parent and modality
JDialog d = new JDialog(f, true);
JLabel l1 = new JLabel("Dismiss dialog to access frame!");
l1.setBorder(new EmptyBorder(20, 100, 10, 100));
d.add(l1);
d.pack();
d.setLocationRelativeTo(f);
d.setVisible(true);
}
public static void main(String[] args) {
Runnable r = () -> {
BlockUserFromFrame o = new BlockUserFromFrame();
};
SwingUtilities.invokeLater(r);
}
}