0 返信 最新の回答 日時: Oct 16, 2014 7:56 AM ユーザー:user8053341

    jre7update2以降のバージョンでGraphicsEnvironment.getLocalGraphicsEnvironment().getScreenDevices();の不具合がある

    user8053341

      windows7/windows8 64bitで32bitJREを実行(WOW64)でサブディスプレイ(displaylink)を使用した環境で下記のサンプルで、実行すると

      WEBSTART(JNJP)では、起動後のディスプレイデバイスの変更をしても最新の情報が取得できません。

      何か対応可能な実装方法がやAPIがあるのかもしれませんが、JAVA7update2まではうまくいっていました。

      また、WEBSTARTでなく、ECLIPSEからの実行でもOKで、WEBSTARTのみでNGになります。

       

      JAVA BUG DATABASE へ投稿したいのですが、私が英語は堪能ではないのでどなたかこの問題を報告してもらえるとありがたです。

      ---

      SAMPLE Surce

       

      GraphicsDevice[] devices = GraphicsEnvironment.getLocalGraphicsEnvironment().getScreenDevices();
      sb.append("\n getScreenDevices().length = "+devices.length);

      // 2台にしても起動時が1のままでになる。
      if (devices.length >= 1) {
        for (int i = 0; i < devices.length; i++) {
         GraphicsDevice aGraphicsDevice = devices[i];
         String strID= aGraphicsDevice.getIDstring();
         int intWidth = aGraphicsDevice.getDisplayMode().getWidth();
         int intHeight = aGraphicsDevice.getDisplayMode().getHeight();
         sb.append("\n "+i+":"+strID+" :    Width= "+intWidth+ " Height= "+intHeight);
         GraphicsConfiguration gc = aGraphicsDevice.getDefaultConfiguration();
         Point point = gc.getBounds().getLocation();
         sb.append(" point.x = "+point.x+ " y= "+point.y);
         System.out.printf("is_Online: display %d width  %d height %d bounds: posX %d posY %d \n",
           i, intWidth,intHeight,point.x,point.y  );
         }
        }
      }