我正在为我的计算机科学老师制作一个Java应用程序,允许他通过从Google Drive文件夹中加载大量PDF并使用Java Swing将它们显示在JScrollPane上,从而使学生进行数字化测试。此应用程序的目标是使测试无法逃脱,以便学生无法通过去Google寻求答案来作弊。然后,在课堂结束时,我的老师将告诉学生一个代码,该代码允许他们通过将其输入JTextField退出应用程序。当前,此应用程序的JFrame设置有以下设置:
Frame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
这意味着,在大多数情况下,该应用程序是无法逃避的,将用户留在JFrame上,直到他们输入要退出的代码为止。我面临的问题是,有某些方法可以通过内置在计算机中的手势退出应用程序或将其最小化。具体来说,我正在看的那个涉及用三个手指在触控板上向下滑动,这使应用程序最小化,从而允许用户打开Google。据我所知,没有办法暂时禁用计算机内置的手势,因此,我能看到的下一个最佳选择是听用户将三根手指放在触控板上,然后拒绝用户滚动。有没有办法做到这一点 ? 此外,如果您还有其他方法可以退出该应用程序而无需退出代码,那又是什么呢?以及我该如何阻止用户利用它们?
Frame.setExtendedState(JFrame.MAXIMIZED_BOTH);
Frame.setUndecorated(true);
Frame.setVisible(true);
Frame.setAlwaysOnTop(true);
Frame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
此外,如果您还有其他方法可以退出该应用而不使用退出代码,那又是什么呢?以及我该如何阻止用户利用它们?
答案 0 :(得分:0)
您可以尝试使用WindowAdapter阻止JFrame的最小化。当按下Minimize(或记录了手势)时,WindowAdapter应该只覆盖JFrame的默认Action。
private WindowAdapter getWindowAdapter(JFrame frm) {
return new WindowAdapter() {
@Override
public void windowIconified(WindowEvent we) {
frm.setState(JFrame.NORMAL);
}
};
并将WindowListener添加到您的JFrame:
frm.addWindowListener(getWindowAdapter(frm));