2011-01-05 4 views
0

Je peux utiliser le mode exclusif plein écran avec des composants Swing normaux, mais pour une raison quelconque, lorsque j'utilise des composants AWT, je ne vois qu'un écran noir en mode plein écran. Sous Windows7, si je m'éloigne de la fenêtre (ALT-TAB), je vois que l'aperçu de la fenêtre/vignette est correctement rendu. En revenant dans l'application, je reçois un écran noir à nouveau.Composants AWT en mode plein écran exclusif

Voici mon test cas:

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); 
     } 
    }); 
    } 
} 

Je courais Java 1.6.0_23 sous Windows7 Professional 64 bits. Ma carte vidéo est une ATI Radeon HD 4600. Y at-il un problème avec mon code? Ma carte vidéo? Le JDK lui-même?

Répondre

2

La désactivation du pipeline Direct3D (-Dsun.java2d.d3d=false) a résolu le problème pour moi. J'ai soumis un rapport de bogue sur le JDK: http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=7010551

+0

D'une manière typique Sun/Oracle, le rapport de bug n'est plus disponible pour le public. Je ne sais pas pourquoi non plus. – Gili

0

Je confirme: sur de nombreux ordinateurs que j'ai essayés, DirectX/Direct3D peut être un piège, et le désactiver était la solution que je recherchais. Je pense que certaines fonctionnalités 2D et plein écran de Direct3D sont incompatibles avec une utilisation fiable en plein écran Java.

J'ai observé plusieurs symptômes: écran clignotant au démarrage de l'écran, verrouillage plein écran, substitution de composants à la fin du plein écran plutôt que de revenir à la fenêtre normale ...!

Tout a été résolu avec ce paramètre VM.

Merci beaucoup Gili

+0

Est-ce une réponse ...? –