簡體   English   中英

AWT組件采用全屏獨占模式

[英]AWT components in fullscreen exclusive mode

我可以對普通的Swing組件使用全屏獨占模式,但是由於某些原因,當我使用AWT組件時,我只能在全屏模式下看到黑屏。 在Windows7下,如果我從窗口切換(ALT-TAB),我會看到窗口預覽/縮略圖正確呈現。 切換回應用程序后,我再次出現黑屏。

這是我的測試用例:

import java.awt.Canvas;
import java.awt.Color;
import java.awt.EventQueue;
import java.awt.GraphicsDevice;
import java.awt.GraphicsEnvironment;
import javax.swing.JFrame;

public class TestMain
{
  public static void main(String[] arg)
  {
    EventQueue.invokeLater(new Runnable()
    {
      @Override
      public void run()
      {
        final GraphicsDevice screen = GraphicsEnvironment.getLocalGraphicsEnvironment().
          getDefaultScreenDevice();
        JFrame frame = new JFrame();
        frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
        frame.getContentPane().setBackground(Color.BLUE);
        frame.getContentPane().setLayout(null);
        frame.setUndecorated(true);

        Canvas canvas = new Canvas();
        canvas.setBackground(Color.RED);
        canvas.setBounds(10, 10, 100, 100);
        frame.getContentPane().add(canvas);

        System.out.println("isFullscreenSupported=" + screen.isFullScreenSupported());
        screen.setFullScreenWindow(frame);
      }
    });
  }
}

我正在Windows7 Professional 64位下運行Java 1.6.0_23。 我的顯卡是ATI Radeon HD 4600.我的代碼有問題嗎? 我的顯卡? JDK本身?

禁用Direct3D管道( -Dsun.java2d.d3d=false )為我解決了問題。 我已經提交了針對JDK的錯誤報告: http//bugs.sun.com/bugdatabase/view_bug.do? video_id = 7010551

我確認:在我嘗試的許多計算機上,DirectX / Direct3D可能是一個陷阱,禁用它是我正在尋找的解決方案。 我認為Direct3D的某些2D和全屏功能與可靠的Java全屏使用不兼容。

我觀察了幾個症狀:全屏啟動時屏幕閃爍,全屏鎖定,全屏結束時組件替換而不是恢復正常窗口......!

所有問題都通過此VM參數解決。

非常感謝吉利

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM