I'm writing an application that is intended to be run on a dual monitor setup, with a "Display" JFrame going fullscreen on one monitor and a "Control" JFrame on the other monitor, sending instructions to the Display. I've tried two separate methods of setting the Display fullscreen; the success of each seems to depend on the OS.
display.setUndecorated(true);
display.setExtendedState(JFrame.MAXIMIZED_BOTH);
Works in Windows, but the JFrame gets hidden under the dock/panels in OS X and Linux.
My other method, utilizing
GraphicsDevice.setFullScreenWindow(display);
Works in all three OSes that I tried, but in Windows, focusing the Control window on the other monitor makes the Display window hide, and calling
display.setAlwaysOnTop(true);
Doesn't fix the problem. I'm kind of partial to the GraphicsDevice
method because I don't have to deal with the issues in OS X or Linux, and I'm hoping that the Windows problem is a simple fix. Is it?
Try this...
For Multiple Screen
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();
}
Use public final void setAlwaysOnTop(boolean alwaysOnTop)
for putting the window on top, If the window is visible, this includes bringing window toFront
, then "sticking" it to the top-most position.