Как установить разрешение приложения Java / системное разрешение в полноэкранном монопольном режиме? - PullRequest
2 голосов
/ 24 мая 2011

Если кто-нибудь может указать мне правильное направление. Вот код, который у меня есть.

//UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
frame.setUndecorated(true);//To remove the bars around the frame.
frame.setResizable(false);//resizability causes unsafe operations.

frame.validate();

//actually applies the fullscreen.
GaphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice().setFullScreenWindow(frame);

1 Ответ

5 голосов
/ 24 мая 2011

Существует три сложных примера, которые могут вас заинтересовать в обучающих материалах по оракулу.

Хотите использовать высокопроизводительную графику в среде разработки Java?Вы всегда хотели запрограммировать игру, но ваши изображения не могли двигаться достаточно быстро?Ваша программа слайд-шоу не работала должным образом, потому что вы не контролировали разрешение экрана пользователя?Если вы задали какой-либо из этих вопросов, вам может подойти API полноэкранного эксклюзивного режима, представленный в выпуске 1.4.


CapabilitiesTest демонстрирует различные возможности буферизации, доступные для машины, на которой он запущен.


DisplayModeTest показывает приложение Swing, которое использует пассиврендеринг.Если доступен полноэкранный эксклюзивный режим, он перейдет в полноэкранный эксклюзивный режим.Если изменения режима отображения разрешены, он позволяет переключаться между режимами отображения.


MultiBufferTest входит в полноэкранный режим и использует мультибуферизацию черезактивный цикл рендеринга.

Взгляните на это:
oracle.com / tutorial / fullscreen

и это:
oracle.com/tutorial/fullscreen/example

РЕДАКТИРОВАТЬ:

Вот пример приложения, который делает то, что вы хотите:

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;


public class DisplayModeChanger extends JFrame {

    private GraphicsDevice device;
    private static JButton changeDM = new JButton("800X600 @ 32 BIT 60HZ");
    private boolean isFullScreenSupported = false;

    public DisplayModeChanger(final GraphicsDevice device) {

        this.device = device;

        setDefaultCloseOperation(EXIT_ON_CLOSE);

        changeDM.addActionListener(new ActionListener() {

            public void actionPerformed(ActionEvent e) {
                DisplayMode dm = new DisplayMode(800, 600, 32, 60);
                device.setDisplayMode(dm);
                setSize(new Dimension(dm.getWidth(), dm.getHeight()));
                validate();
            }
        });

    }

    public void goFullScreen() {
        isFullScreenSupported = device.isFullScreenSupported();
        setUndecorated(isFullScreenSupported);
        setResizable(!isFullScreenSupported);
        if (isFullScreenSupported) {
            device.setFullScreenWindow(this);
            validate();
        } else {
            pack();
            setVisible(true);
        }
    }

    public static void main(String[] args) {
        GraphicsEnvironment env = GraphicsEnvironment.getLocalGraphicsEnvironment();
        GraphicsDevice defaultScreen = env.getDefaultScreenDevice();
        DisplayModeChanger changer = new DisplayModeChanger(defaultScreen);
        changer.getContentPane().add(changeDM);
        changer.goFullScreen();
    }
}
...