gpt4 book ai didi

java - 这本Java书有错误吗?或者我错过了什么? (显示模式)

转载 作者:行者123 更新时间:2023-11-30 04:17:23 24 4
gpt4 key购买 nike

以下代码的编写方式与我正在阅读的 Java 书中完全相同

package main;

import java.awt.Color;
import java.awt.DisplayMode;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.RenderingHints;

import javax.swing.JFrame;

public class FullScreenTest extends JFrame {
public static void main(String[] args) {
DisplayMode displayMode;
if (args.length == 3) {
displayMode = new DisplayMode(Integer.parseInt(args[0]),
Integer.parseInt(args[1]), Integer.parseInt(args[2]),
DisplayMode.REFRESH_RATE_UNKNOWN);

} else {
displayMode = new DisplayMode(800, 600, 16,
DisplayMode.REFRESH_RATE_UNKNOWN);
}
FullScreenTest test = new FullScreenTest();
test.run(displayMode);
}

private static final long DEMO_TIME = 1000;

public void run(DisplayMode displayMode) {
setBackground(Color.blue);
setForeground(Color.white);
setFont(new Font("Dialog", Font.PLAIN, 24));

SimpleScreenManager screen = new SimpleScreenManager();
try {
screen.setFullScreen(displayMode, this);
try {
Thread.sleep(DEMO_TIME);
} catch (Exception e) {
}

} finally {
screen.restoreScreen();
}
}

public void paint(Graphics g) {

g.drawString("Hello World!", 20, 50);
}
}

当我运行这个程序时,我会黑屏 5 秒,仅此而已。

但是当我更改以下行时:

displayMode = new DisplayMode(800, 600, 16, DisplayMode.REFRESH_RATE_UNKNOWN);

对此:

 displayMode = new DisplayMode(600, 800, 16, DisplayMode.REFRESH_RATE_UNKNOWN);

它工作得很好。

为什么会发生这种情况?不太明白。

谢谢

-史蒂夫

<小时/>
 package main;

import java.awt.DisplayMode;
import java.awt.GraphicsDevice;
import java.awt.GraphicsEnvironment;
import java.awt.Window;

import javax.swing.JFrame;

public class SimpleScreenManager {

private GraphicsDevice device;

public SimpleScreenManager() {
GraphicsEnvironment environment = GraphicsEnvironment
.getLocalGraphicsEnvironment();
device = environment.getDefaultScreenDevice();
}

public void setFullScreen(DisplayMode displayMode, JFrame window) {
window.setUndecorated(true);
window.setResizable(false);

device.setFullScreenWindow(window);

if (displayMode != null && device.isDisplayChangeSupported()) {

try {
device.setDisplayMode(displayMode);
} catch (Exception e) {

}

}
}

public Window getFullScreenWindow() {
return device.getFullScreenWindow();
}

public void restoreScreen() {
Window window = device.getFullScreenWindow();
if (window != null) {
window.dispose();
}
device.setFullScreenWindow(null);
}
}

最佳答案

DisplayMode 与 Java“全屏独占模式”功能有关,记录如下:

我鼓励您尝试这里的一些示例程序:

底线是:

1) 并非所有操作系统或显示设备都必须受此 API 支持

2) 如果设备本身不支持任意 DisplayMode 设置的所有组合,则不一定支持它们

关于java - 这本Java书有错误吗?或者我错过了什么? (显示模式),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18028749/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com