gpt4 book ai didi

Java - 将 JFrame 设置为全屏时,屏幕变黑

转载 作者:行者123 更新时间:2023-11-29 06:02:23 25 4
gpt4 key购买 nike

我正在尝试在 Canvas 上绘制一些东西,将其添加到 JFrame,然后将此 JFrame 设置为全屏。我的问题是:在全屏模式下我只看到黑屏。在屏幕变黑之前,我很快就能看到 Canvas 的粉红色背景。

直接在 JFrame 上绘图然后将其设置为全屏效果非常好,我可以看到测试文本。我假设正确显示 Canvas 有问题。

这是我的代码:

public class FullscreenTest extends Canvas {

private JFrame mainFrame;

public FullscreenTest(){
this.mainFrame = new JFrame();
JPanel contentPane = (JPanel) mainFrame.getContentPane();
contentPane.add(this);
}

public void run(DisplayMode dm){
setBackground(Color.PINK);
setForeground(Color.WHITE);
setFont(new Font("Arial", Font.PLAIN, 24));

Screen s = new Screen();

s.setFullScreen(dm, this.mainFrame);

try {
Thread.sleep(5000);
} catch (InterruptedException exc) { exc.printStackTrace(); }

s.closeFullScreenWindow();
}

public void paint(Graphics g){
g.drawString("This is some testtext", 200, 200);
}

public static void main(String[] args){
DisplayMode dm = new DisplayMode(800, 600, 32, DisplayMode.REFRESH_RATE_UNKNOWN);
FullscreenTest test = new FullscreenTest();
test.run(dm);
}
}

这是 Screen.setFullScreen(DisplayMode dm, JFrame window) 方法的作用:

//graphicsDevice = GraphicsEnvironment.getLocalGraphicsEnvironment()
// .getDefaultScreenDevice();
public void setFullScreen(DisplayMode dm, JFrame window){
window.setUndecorated(true);
window.setResizable(false);
graphicsDevice.setFullScreenWindow(window);

if(dm != null && graphicsDevice.isDisplayChangeSupported()){
graphicsDevice.setDisplayMode(dm);
}
}

有人知道为什么我在全屏模式下看不到 JFrame 的内容吗?

最佳答案

1) 你有三个一般性问题

  • 切勿使用 Thread.sleep(5000); 阻止 EDT 使用 Swing Timer相反,示威here

  • (如果没有真正重要的原因)不要混淆 AWT with Swing剩下的是here ,并使用 JPanel 而不是 Canvas (对于 Canvas 是否有 paint 方法,对于 JPanelpaintComponent)

  • 您的 public void paint(Graphics g){JFrame 而不是 Canvas 并被 Thread 锁定.sleep(5000);

2) Swing GUI 相关应该被包装到 invokeLater()

public static void main(String[] args){

更多信息在 Initial Thread

3) in linked code example你可以找到演示如何在 Swing 中使用后台线程

关于Java - 将 JFrame 设置为全屏时,屏幕变黑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9649394/

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