2011-01-05 1 views
0

일반 Swing 구성 요소와 함께 전체 화면 배타 모드를 사용할 수 있지만 AWT 구성 요소를 사용할 때 어떤 이유로 전체 화면 모드의 검정 화면 만 표시됩니다. Windows7에서, (ALT-TAB) 창에서 나가면 창 미리보기/축소판이 올바르게 렌더링됩니다. 응용 프로그램으로 다시 전환하면 다시 검은 색 화면이 나타납니다.전체 화면 배타 모드의 AWT 구성 요소

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의 전문 64 비트에서 자바 1.6.0_23을 실행하고 있습니다 :

은 여기 내 테스트 케이스입니다. 내 비디오 카드는 ATI Radeon HD 4600입니다. 내 코드에 문제가 있습니까? 내 비디오 카드 요? JDK 자체?

답변

2

Direct3D 파이프 라인 (-Dsun.java2d.d3d=false)을 사용하지 않으면 문제가 해결되었습니다. JDK에 대한 버그 보고서를 제출했습니다 : http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=7010551

+0

전형적인 Sun/Oracle 방식으로 버그 보고서를 더 이상 공개하지 않습니다. 나는 이유도 모른다. – Gili

0

제가 확인한 많은 컴퓨터에서, DirectX/Direct3D는 함정이 될 수 있으며이를 사용하지 못하게하는 것이 내가 원하는 해결책이었습니다. Direct3D의 2D 및 전체 화면 기능 중 일부는 신뢰할 수있는 Java 전체 화면 사용과 호환되지 않습니다.

몇 가지 증상이 나타났습니다. 전체 화면 시작시 화면 깜박임, 전체 화면 잠금, 일반 창 작업으로 돌아 가기보다는 전체 화면 끝에서 구성 요소 대체 ...!

이 VM 매개 변수로 모두 해결되었습니다.

고마워요. Gili

+0

답변입니까? –