如何为虚拟屏幕运行java应用程序?

如何为虚拟屏幕运行java应用程序?,java,linux,swing,graphics,xorg,Java,Linux,Swing,Graphics,Xorg,在Linux中,我们有像desktop 1、2、3、4这样的虚拟屏幕。大多数情况下,我们使用桌面1(屏幕1,带一个显示器) 现在,我的问题是如何告诉我的java应用程序在desktop 2上启动(屏幕2,带有一个监视器) 默认情况下,当我运行java-cp/var/tmp/SystemX.jar run.X时,它将在桌面1的屏幕1中启动。这不是我的情况 已尝试:以下操作但没有帮助导致,它针对双监视器场景运行。不是我所期望的 screen = Toolkit.getDefaultToolkit(

在Linux中,我们有像desktop 1、2、3、4这样的虚拟屏幕。大多数情况下,我们使用桌面1(屏幕1,带一个显示器)

现在,我的问题是如何告诉我的java应用程序在desktop 2上启动(屏幕2,带有一个监视器)

默认情况下,当我运行java-cp/var/tmp/SystemX.jar run.X时,它将在桌面1的屏幕1中启动。这不是我的情况

已尝试:以下操作但没有帮助导致,它针对双监视器场景运行。不是我所期望的

 screen = Toolkit.getDefaultToolkit().getScreenSize();
  GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
  GraphicsDevice[] screenDevices = ge.getScreenDevices();
  for (int i = 0; i < screenDevices.length; i++) {
    System.out.println(screenDevices[i].getIDstring());

    int screenWidth = 1024;
    int screenHeight = 764;
    if (screenDevices[i].getDisplayMode()!=null) {
      DisplayMode dm = screenDevices[i].getDisplayMode();
      screenWidth = dm.getWidth();
      screenHeight = dm.getHeight();        
    }
    System.out.println("[myResolution]: " + screenWidth + " " + screenHeight);
    screen.width = screenWidth;
    screen.height = screenHeight;
  }

*但如果我的应用程序没有边框,而没有窗口标题,该怎么办?如何告诉wmctrl?

无边框应用程序仍应具有窗口标题。(即xfce4面板显示。)您可以使用以下方法检查它们是什么:

wmctrl-l


从命令行。如果您很难确定哪个窗口是您的,请在打开它之前尝试该命令,然后在它打开后再尝试。这样,您只需查找新窗口。

无边界应用程序仍应具有窗口标题。(即xfce4面板显示。)您可以使用以下方法检查它们是什么:

wmctrl-l


从命令行。如果您很难确定哪个窗口是您的,请在打开它之前尝试该命令,然后在它打开后再尝试。这样,您只需查找新窗口。

您是否能够在特定屏幕上启动正常应用程序,即终端窗口?我现在使用的是windows(在office中),所以我不能亲自尝试,但我认为X11程序有一个标准选项可以用于此,我认为这些选项也可以传递到Java命令行。您是否可以在特定屏幕上启动普通应用程序,即终端窗口?我现在使用的是windows(在office中),所以我不能亲自尝试,但我认为X11程序有一个标准选项可用于此,我认为这些选项也可以传递到Java命令行。
#!/bin/sh
(export DISPLAY=:0.0 && java -cp /var/tmp/SystemX.jar run.X) & (wmctrl -r "WINDOW_TITLE" -t DESKTOP_NUMBER)