Компоненты AWT в полноэкранном эксклюзивном режиме - PullRequest
0 голосов
/ 05 января 2011

Я могу использовать полноэкранный эксклюзивный режим с обычными компонентами 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);
      }
    });
  }
}

Я использую Java 1.6.0_23 под 64-битной Windows7 Professional.Моя видеокарта ATI Radeon HD 4600. Что-то не так с моим кодом?Моя видеокарта?Сам JDK?

Ответы [ 2 ]

2 голосов
/ 05 января 2011

Отключение конвейера Direct3D (-Dsun.java2d.d3d=false) исправило проблему для меня. Я подал отчет об ошибке в JDK: http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=7010551

0 голосов
/ 17 июля 2012

Подтверждаю: на многих компьютерах, которые я пробовал, DirectX / Direct3D может быть ловушкой, и его отключение было решением, которое я искал.Я думаю, что некоторые 2D и полноэкранные функции Direct3D несовместимы с надежным полноэкранным использованием Java.

Я наблюдал несколько симптомов: мигание экрана в начале полноэкранного режима, блокировка полного экрана, замена компонентов в концеполный экран, а не возвращение к обычному оконному режиму ...!

Все было решено с помощью этого параметра виртуальной машины.

Большое спасибо Gili

...