Пользовательское Разрешение монитора, не распознанное Java

Родное разрешение моего странного монитора не распознано Windows, таким образом, я должен установить другое разрешение для него. Проблема состоит в том, что Java не распознает его, так как это не находится в "утвержденном" списке Win7, таким образом, полноэкранный режим вовлекает. Netbeans выходит из полноэкранного штрафа, таким образом, должен быть путь вокруг этого. Кто-либо знает это?

//Редактирование (3/29/2010): похоже, что NetBeans фальсифицирует полный экран вместо того, чтобы на самом деле войти в режим Full-Screen Exclusive, таким образом, это не может на самом деле быть разрешимо. На данный момент я также фальсифицирую его. Кажется, что Java должен распознать активный DisplayMode как допустимый, все же.

Этот пример воспроизводит проблему:


package resolutionexample;

import java.awt.Dimension;
import java.awt.DisplayMode;
import java.awt.GraphicsDevice;
import java.awt.GraphicsEnvironment;
import javax.swing.JFrame;
import javax.swing.SwingUtilities;

public class Main {

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable(){
            public void run() {
                GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
                GraphicsDevice gd = ge.getDefaultScreenDevice();

                DisplayMode currentDM = gd.getDisplayMode();

                boolean currentInAvailable = false;

                System.out.println("Available resolutions:");
                for ( DisplayMode availDM : gd.getDisplayModes() ){
                    //System.out.println(availDM.getWidth() + "x" + availDM.getHeight());
                    if ( availDM.equals(currentDM) ){
                        currentInAvailable = true;
                    }
                }

                System.out.println("Current resolution: " + currentDM.getWidth() + "x" + currentDM.getHeight() );

                System.out.println("Current in available: " + currentInAvailable);


                JFrame frame = new JFrame("Resolution Bug Example");
                frame.setVisible(true);
                frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

                if ( !gd.isFullScreenSupported() ){System.exit(0);}

                gd.setFullScreenWindow(frame);

                gd.setFullScreenWindow(null);
            }
        });
    }
}

Выходное выполнение 1680x1050 (wonky родное разрешение монитора):


run:
Available resolutions:
Current resolution: 1680x1050
Current in available: false
Exception in thread "AWT-EventQueue-0" java.lang.IllegalArgumentException: Invalid display mode
        at sun.awt.Win32GraphicsDevice.setDisplayMode(Win32GraphicsDevice.java:393)
        at sun.awt.Win32GraphicsDevice.setFullScreenWindow(Win32GraphicsDevice.java:329)
        at resolutionexample.Main$1.run(Main.java:43)
        at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
        at java.awt.EventQueue.dispatchEvent(EventQueue.java:597)
        at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
        at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
        at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
        at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
BUILD SUCCESSFUL (total time: 2 seconds)

Вывод, если я установил свое разрешение на 1024x768 перед выполнением:


run:
Available resolutions:
Current resolution: 1024x768
Current in available: true
BUILD SUCCESSFUL (total time: 2 seconds)
5
задан Angie 29 March 2010 в 17:47
поделиться

2 ответа

Что вы имеете в виду под "зависанием"? Не очень хорошее разрешение или нет полноценного полноэкранного режима? Для большого экрана вы можете попробовать

Rectangle rect = GraphicsEnvironment.getLocalGraphicsEnvironment().
                 getMaximumWindowBounds();
JFrame frame = new JFrame();
frame.setPreferredSize(new Dimension(rect.width, rect.height));

. Для полноэкранного переключения вы можете просто скопировать исходники из MainWindow netbeans : -)

2
ответ дан 15 December 2019 в 06:22
поделиться

Как насчет добавления разрешения в Windows 7?

Я сделал это однажды с помощью PowerStrip ( http://entechtaiwan.com/util/ps.shtm .), Но это было для XP.

1
ответ дан 15 December 2019 в 06:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: