发布于2023-03-30 18:55 阅读(673) 评论(0) 点赞(12) 收藏(3)
我有一个双显示器配置,我设法Jframe
在所需的屏幕上打开我的。
但问题是,每次我在主屏幕上单击时,另一个窗口都会最小化,但我需要始终位于最前面。
PS:我勾选了总在最前面的复选框
GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
GraphicsDevice[] gs = ge.getScreenDevices();
这就是我使用另一个屏幕的方式。
只要我使用 setFullScreenWindow,我就会遇到同样的问题。用对话框替换框架可以解决问题,但我猜你真的想要一个框架,而不是对话框。
所以解决方案是手动最大化框架而不是使用 setFullScreenWindow:
import java.awt.*;
import javax.swing.*;
public class MultiMonitorFrame extends JFrame {
public static void showFrameOnScreen(Window frame, int screen) {
GraphicsEnvironment graphicsEnvironment = GraphicsEnvironment.getLocalGraphicsEnvironment();
GraphicsDevice[] graphicsDevices = graphicsEnvironment.getScreenDevices();
GraphicsDevice graphicsDevice = ( screen > -1 && screen < graphicsDevices.length ) ? graphicsDevices[screen] : graphicsDevices.length > 0 ? graphicsDevices[0] : null;
if (graphicsDevice == null)
{
throw new RuntimeException( "There are no screens !" );
}
Rectangle bounds = graphicsDevice.getDefaultConfiguration().getBounds();
frame.setSize(bounds.width, bounds.height);
frame.setLocation(bounds.x, bounds.y);
}
public static void main(String[] args) {
JFrame frame1 = new JFrame("First frame");
frame1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame1.setVisible(true);
frame1.setAlwaysOnTop(true);
JFrame frame2 = new JFrame("Second frame");
frame2.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame2.setVisible(true);
frame2.setAlwaysOnTop(true);
showFrameOnScreen(frame1, 1);
showFrameOnScreen(frame2, 2);
}
}
这会在一台显示器上显示两个框架,并且在使用 ALT-Tab 或单击桌面时框架不会最小化。
作者:黑洞官方问答小能手
链接:http://www.javaheidong.com/blog/article/666428/09f789b54ca319df65d8/
来源:java黑洞网
任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任
昵称:
评论内容:(最多支持255个字符)
---无人问津也好,技不如人也罢,你都要试着安静下来,去做自己该做的事,而不是让内心的烦躁、焦虑,坏掉你本来就不多的热情和定力
Copyright © 2018-2021 java黑洞网 All Rights Reserved 版权所有,并保留所有权利。京ICP备18063182号-2
投诉与举报,广告合作请联系vgs_info@163.com或QQ3083709327
免责声明:网站文章均由用户上传,仅供读者学习交流使用,禁止用做商业用途。若文章涉及色情,反动,侵权等违法信息,请向我们举报,一经核实我们会立即删除!