当前位置: 首页 > 面试题库 >

Java和全屏在多个监视器

连时铭
2023-03-14
问题内容

我的Java应用程序的摘录:

 JFrame f = new JFrame();
 GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
 GraphicsDevice gd = ge.getDefaultScreenDevice();
 gd.setFullScreenWindow(f);

因此,它所做的就是使其自满屏。现在奇怪的是,该程序是全屏的,但只能在一台显示器上!例如,我有一个Windows
Vista系统,其中两个屏幕组合在一个桌面上。如何自动让它在所有监视器上全屏显示?

好的,我尝试过:

import java.awt.image.ColorModel;
import java.awt.GraphicsConfiguration;
import java.awt.GraphicsDevice;
import java.awt.GraphicsEnvironment;
import java.awt.Rectangle;

class grdevs
{
    public static void main(String [] args)
    {
        GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
        GraphicsDevice[] gs = ge.getScreenDevices();
        for(GraphicsDevice curGs : gs)
        {
            GraphicsConfiguration[] gc = curGs.getConfigurations();
            for(GraphicsConfiguration curGc : gc)
            {
                Rectangle bounds = curGc.getBounds();
                ColorModel cm = curGc.getColorModel();

                System.out.println("" + bounds.getX() + "," + bounds.getY() + " " + bounds.getWidth() + "x" + bounds.getHeight() + " " + cm);
            }
        } 
    }
}

但它给出:

0.0,0.0 1024.0x768.0 DirectColorModel: rmask=ff0000 gmask=ff00 bmask=ff amask=0
0.0,0.0 1024.0x768.0 DirectColorModel: rmask=ff0000 gmask=ff00 bmask=ff amask=0
0.0,0.0 1024.0x768.0 DirectColorModel: rmask=ff0000 gmask=ff00 bmask=ff amask=0
0.0,0.0 1024.0x768.0 DirectColorModel: rmask=ff0000 gmask=ff00 bmask=ff amask=0
0.0,0.0 1024.0x768.0 DirectColorModel: rmask=ff0000 gmask=ff00 bmask=ff amask=0
0.0,0.0 1024.0x768.0 DirectColorModel: rmask=ff0000 gmask=ff00 bmask=ff amask=0
1024.0,0.0 1024.0x768.0 DirectColorModel: rmask=ff0000 gmask=ff00 bmask=ff amask=0
1024.0,0.0 1024.0x768.0 DirectColorModel: rmask=ff0000 gmask=ff00 bmask=ff amask=0
1024.0,0.0 1024.0x768.0 DirectColorModel: rmask=ff0000 gmask=ff00 bmask=ff amask=0
1024.0,0.0 1024.0x768.0 DirectColorModel: rmask=ff0000 gmask=ff00 bmask=ff amask=0
1024.0,0.0 1024.0x768.0 DirectColorModel: rmask=ff0000 gmask=ff00 bmask=ff amask=0
1024.0,0.0 1024.0x768.0 DirectColorModel: rmask=ff0000 gmask=ff00 bmask=ff amask=0

例如,我希望能将2048x768的设备组合成一个设备(我单击“扩展桌面”)。


问题答案:

您可以尝试:

int width = 0;
int height = 0;
GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
GraphicsDevice[] gs = ge.getScreenDevices();
for (GraphicsDevice curGs : gs)
{
  DisplayMode mode = curGs.getDisplayMode();
  width += mode.getWidth();
  height = mode.getHeight();
}

这应该计算多个屏幕的总宽度。显然,它仅支持上述形式的水平对齐的屏幕-您必须分析图形配置的边界以处理其他监视器对齐(取决于您要制作的防弹效果)。

编辑:然后设置框架的大小: f.setSize(width, height);



 类似资料:
  • 如何监听DPlayer中图片圈出的这两个按钮

  • 本文向大家介绍HTML5如何监听video的全屏和退出全屏?相关面试题,主要包含被问及HTML5如何监听video的全屏和退出全屏?时的应答技巧和注意事项,需要的朋友参考一下 监听fullscreenchange事件

  • 问题内容: 假设我有成千上万个对象的数组,还有少量线程可以访问每个对象。我想保护对一种对象方法的访问。最简单的方法是将该方法声明为。但是,无论采用哪种实施方式,这都可能导致创建数千个监视器。如果这是Win32,我将永远不会创建数千个内核对象(例如Mutex),但是CRITICAL_SECTIONs 可能 是合理的。我想知道Java中的情况如何。考虑到争用的机会很低,使用监视器会带来比其所需的过多内

  • 我有一个外部显示器与我的mac连接,我想制作一个JavaFX应用程序,它在我的主显示器和外部显示器上都是全屏的。 我试过下面的代码,但它总是一次只给我一个全屏。 当第一个setFullScreen(true)被调用时,第一个阶段在我的主监视器中出现全屏。 当调用第二个setFullScreen(true)时,第一级失去其全屏,而第二级在外部监视器中出现全屏。 如何在两个监视器中同时将两个阶段设置为

  • 问题内容: 有谁知道如何设置可触发PMU通过以下方式监视多个(类型)事件的结构? 像一样,它具有两种不同的事件类型(PERF_TYPE_HARDWARE和PERF_TYPE_SOFTWARE),但是在perf_event_open的联机帮助页上的示例中,只能分配单个值。 任何建议将不胜感激,谢谢! 20170208更新 感谢@gudok为我指明方向,但结果似乎有些异常。如下所示的演示程序(用于测量

  • 这真的很烦人,还有人面对过这个问题吗?有解决办法吗?