java - 一旦我的窗口显示在 linux/mac 中,如何确保用户不能做任何其他事情
问题描述
我有下面的代码,这将使窗口始终显示在顶部,直到用户关闭,即使我已经实现了焦点侦听器,并且当焦点设置为始终顶部并重新获得焦点时,这在 Windows 中非常有效。在 mac 和 linux 用户可以切换到不同的桌面/屏幕,有没有办法复制窗口,如果用户在一个地方关闭,如果关闭所有东西(基本上是同步的)。这不是 kiosk 应用程序,应用程序运行是普通用户机器,我想确保当我的应用程序提示时,用户应该输入并且他不应该逃跑
import java.awt.event.*;
import javax.swing.*;
public class MainWindow extends JFrame implements WindowFocusListener
{
public MainWindow()
{
addWindowFocusListener(this);
setAlwaysOnTop(true);
this.setFocusable(true);
// this.setFocusableWindowState(true);
panel = new JPanel();
//setSize(WIDTH,HEIGHT);
setUndecorated(true);
setLocation(X,Y);
setExtendedState(MAXIMIZED_BOTH);
setVisible(true);
}
public void windowGainedFocus(WindowEvent e){}
public void windowLostFocus(WindowEvent e)
{
if(e.getNewState()!=e.WINDOW_CLOSED){
//toFront();
//requestFocus();
setAlwaysOnTop(false);
setAlwaysOnTop(true);
//requestFocusInWindow();
System.out.println("focus lost");
}
}
private JPanel panel;
private static final int WIDTH = 200;
private static final int HEIGHT = 200;
private static final int X = 100;
private static final int Y = 100;
public static void main(String args[]){
new MainWindow();}
}
解决方案
推荐阅读
- python - lxml:元素上的 XPath 和命名空间
- java - 如何一起执行 2 个查询?
- ios - UICollectionView - 随机选择单元格
- docker - Docker 正在尝试从私有仓库中提取所有 nuget 包
- mysql - 插入或更新(如果存在带有键的行)一组行
- blogger - 博客文章和照片停止从 Google 搜索索引
- python - 如何在 PyTorch 中获得导数的完整雅可比行列式?
- jquery - 首次执行 Cordova Android 应用程序上的 Ajax 请求错误
- tensorflow - 将数据加载到 tensorflow 迁移学习时的 LICENSE.txt
- go - 从 discordgo 中删除不和谐消息