windows - AWT komponenter i fuldskærm eksklusiv tilstand

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg kan bruge fuldskærm eksklusiv tilstand med normale Swing komponenter, men af ​​en eller anden grund når jeg bruger AWT komponenter, ser jeg kun en sort skærm i fuldskærmstilstand. Under Windows7, hvis jeg skifter væk fra vinduet (ALT-TAB) ser jeg at vinduet preview/thumbnail gør det rigtigt. Når du skifter tilbage til programmet, får jeg en sort skærm igen.


Her er min test-sag:


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


Jeg kører Java 1.6.0\_23 under Windows7 Professional 64-bit. Mit videokort er en ATI Radeon HD 4600. Er der noget galt med min kode? Mit videokort? JDK selv?

Bedste reference


Deaktivering af Direct3D-rørledningen (-Dsun.java2d.d3d=false) løste problemet for mig. Jeg har indgivet en fejlrapport mod JDK: http://bugs.sun.com/bugdatabase/view\_bug.do?bug\_id=7010551[3]

Andre referencer 1


Jeg bekræfter: På mange computere, jeg har forsøgt, kan DirectX/Direct3D være en fælde, og at deaktivere det var den løsning, jeg ledte efter. Jeg tror, ​​at nogle 2D og fuldskærm funktioner i Direct3D er uforenelige med en pålidelig Java fuld skærm brug.


Jeg observerede flere symptomer: blinkende skærm ved start af fuld skærm, fuld skærm lås, komponent substitution i slutningen af ​​fuld skærm i stedet for at vende tilbage til normal vindue ...!


Alt blev løst med denne VM parameter.


Mange tak til Gili