java - LibGDX 控制多台显示器
问题描述
我正在尝试通过 LibGDX 创建一个应用程序,我想控制应用程序在哪个监视器上启动。
我发现了一种可以让我实现这一目标的小解决方法:
cfg.setMaximized(true)
cfg.setMaximizedMonitor(Lwjgl3ApplicationConfiguration.getMonitors()(1))
这将在辅助屏幕上的最大化窗口中打开应用程序。但是,我希望能够在第二台(甚至第三台显示器)上启动应用程序而不使其最大化。
有任何想法吗?
解决方案
在多显示器设置中,显示器并排放置并具有虚拟位置。将窗口从一个监视器移动到另一个监视器就像将它的位置更改为该监视器的边界内一样简单。
在 LibGDX 中,可以通过 MonitorvirtualX
和virtualY
字段找到监视器位置。它们的尺寸可以通过config.getDisplayMode(Monitor)
例如,在这里,我将列表中的第二个监视器上的窗口居中
int width = 800;
int height = 600;
var mon = monitors[1];
DisplayMode mode = Lwjgl3ApplicationConfiguration.getDisplayMode(mon);
int posX = mon.virtualX + mode.width/2 - width/2;
int posY = mon.virtualY + mode.height/2 - height/2;
config.setWindowedMode(width, height);
config.setWindowPosition(posX, posY);
尽管最大化窗口可能会更好的用户体验(谁想在小窗口中玩?)
推荐阅读
- sql - SQL查询每个ID的最新日期/时间戳记录
- google-cloud-datastore - Google Cloud Datastore - 按种类查询和按 GQL 查询的不同结果
- ruby - 将 current_user id 分配给导入的学生列表
- openshift - 完成后自动删除 Openshift 上的 pod
- intellij-idea - 在 IntelliJ 中运行 JUnit 测试时如何防止想法测试输出文件?
- python - 下载 spacy 模型并获取 AttributeError 'NoneType' 对象没有属性 'ndarray'
- javascript - 在 xtype tagfield 中,发送到服务器的值显示为单个组合行。extjs
- google-bigquery - 按首选顺序进行正则表达式和子分类的有效方法
- javascript - 忽略 Firestore 中的 DocID
- php - 成功登录后,我应该在会话、全局变量或每个页面上的查询中保存用户数据吗?