#java #scala #libgdx
Вопрос:
Я пытаюсь создать приложение с помощью LibGDX, в котором я хотел бы контролировать, на каком мониторе запускается приложение.
Я нашел небольшой обходной путь, который позволяет мне достичь этого:
cfg.setMaximized(true)
cfg.setMaximizedMonitor(Lwjgl3ApplicationConfiguration.getMonitors()(1))
Это откроет приложение в развернутом окне на дополнительном экране. Тем не менее, я хотел бы иметь возможность запускать приложение на дополнительном (или даже третьем мониторе) без его увеличения.
Есть какие-нибудь идеи?
Ответ №1:
В настройках с несколькими мониторами мониторы располагаются бок о бок и имеют виртуальные позиции. Перемещение окна с монитора на монитор так же просто, как изменение его положения, чтобы оно находилось в пределах этого монитора.
В LibGDX позиции монитора можно найти с помощью монитора virtualX
и virtualY
полей. Их размеры можно найти с config.getDisplayMode(Monitor)
Вот, например, я центрирую окно на 2-м мониторе в списке
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);
Хотя увеличение окна, вероятно, было бы лучше для пользователя (кто вообще хочет играть в маленьком окне?)