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

Java setFullScreenWindow()保持在最前面

陆涵畅
2023-03-14
问题内容

我正在编写一个打算在双监视器设置上运行的应用程序,其中“ Display” JFrame在一个监视器上全屏显示,而“ Control”
JFrame在另一监视器上全屏显示,向显示器发送指令。我尝试了两种设置全屏显示的方法;每个成功与否取决于操作系统。

display.setUndecorated(true);
display.setExtendedState(JFrame.MAXIMIZED_BOTH);

在Windows中可以使用,但是在OS X和Linux中,JFrame隐藏在底座/面板下。

我的另一种方法,利用

GraphicsDevice.setFullScreenWindow(display);

在我尝试过的所有三个html" target="_blank">操作系统上均可使用,但是在Windows中,将“控制”窗口放在另一台监视器上会使“显示”窗口隐藏,并调用

display.setAlwaysOnTop(true);

无法解决问题。我有点偏爱该GraphicsDevice方法,因为我不必处理OS
X或Linux中的问题,并且我希望Windows问题是一个简单的解决方法。是吗?


问题答案:

试试这个…

对于多屏

GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
GraphicsDevice[] gs = ge.getScreenDevices();


// Get size of each screen

for (int i=0; i<gs.length; i++) {
    DisplayMode dm = gs[i].getDisplayMode();
    int screenWidth = dm.getWidth();
    int screenHeight = dm.getHeight();
}

使用public final void setAlwaysOnTop(boolean alwaysOnTop)了把最上面的窗口,如果窗口是可见的,这包括将窗口toFront,然后在“坚持”它最上面的位置。



 类似资料:
  • 我正在编写一个应用程序,打算在双监视器设置上运行,其中一个监视器上的“Display”JFrame全屏显示,另一个监视器上的“Control”JFrame向显示器发送指令。我尝试了两种不同的全屏显示设置方法;每种技术的成功似乎都取决于操作系统。 可以在Windows中工作,但JFrame在OS X和Linux中隐藏在dock/Panel下。 我的另一种方法,利用 在我试过的三种操作系统中都能工作,

  • 问题内容: 在Objective-C for Cocoa Apps中,可以使用这种方式使窗口始终位于顶部吗? 如何用Swift实现相同的目标? 导致构建错误 问题答案: 要更改窗口级别,您不能在viewDidload中执行此操作,因为视图的window属性始终在那里为零,但是可以通过覆盖viewDidAppear方法或IBAction方法来实现: 斯威夫特1 迅捷2 迅捷3 斯威夫特4 最后,他们

  • 我读过Eric lippert关于<code>异步关键字的困惑。他说: 它()意味着“此方法包含包含等待异步操作的控制流,因此将由编译器重写为连续传递样式,以确保异步操作可以在正确的位置恢复此方法。”异步方法的关键在于尽可能多地停留在当前线程上 这个我不懂。如果我执行一个异步方法(< code>Task)并且它运行了,那么它肯定会在另一个线程上运行。 此外,如果我编写一个方法使用,(imho)它会

  • 我有四个内部框架和三个按钮在里面。当我点击最大化按钮,最大化,但它重叠所有的框架。但我的观点是,它应该显示最小化的框架。请找到下面的代码

  • 我一直在做一些实验,使用一些变换,例如在Matlab中对图像数据进行DCT变换。使用512x512像素lena图像的DCT示例: x=双(imread('lenna.bmp'));R=dct2(x); 然后,我想通过保持R的100000个最大系数并将剩余的设置为零来阈值变换系数。 我该怎么做?

  • 因为我们知道progressdialog需要一个参数上下文或获取片段的活动,但在解除对话框后,它转到了另一个片段,我将其设置为mainactivity默认片段为homepage 这是我课堂上使用的方法