如何在全屏独占模式下设置Java应用程序/系统分辨率的分辨率?

时间:2011-05-24 19:07:34

标签: java fullscreen

如果有人能指出我正确的方向。 这是我到目前为止的代码。

//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 个答案:

答案 0 :(得分:5)

有三个复杂的例子你可能对oracle教程感兴趣。

  

您想要使用高性能吗?   Java开发中的图形   环境?你一直想要吗?   编程游戏,但你的图像   会动作不够快吗?有你的   幻灯片放映程序无法正常工作   因为你无法控制   用户的显示分辨率?如果你的话   一直问这些问题,   然后是全屏独家模式   可能是在1.4版中引入的API   你在寻找什么。


  

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