FullScreenJFrame.java

00001 package edu.stanford.hci.r3.util.components;
00002 
00003 import java.awt.DisplayMode;
00004 import java.awt.GraphicsDevice;
00005 import java.awt.GraphicsEnvironment;
00006 
00007 import javax.swing.JFrame;
00008 
00020 public class FullScreenJFrame extends JFrame {
00021 
00025         private GraphicsDevice screenDevice;
00026 
00030         public FullScreenJFrame() {
00031                 setUndecorated(true);
00032                 final GraphicsEnvironment localGraphicsEnvironment = GraphicsEnvironment
00033                                 .getLocalGraphicsEnvironment();
00034                 screenDevice = localGraphicsEnvironment.getDefaultScreenDevice();
00035         }
00036 
00040         public FullScreenJFrame(int deviceIndex) {
00041                 setUndecorated(true);
00042                 final GraphicsEnvironment localGraphicsEnvironment = GraphicsEnvironment
00043                                 .getLocalGraphicsEnvironment();
00044                 GraphicsDevice[] screenDevices = localGraphicsEnvironment.getScreenDevices();
00045                 screenDevice = screenDevices[deviceIndex];
00046         }
00047 
00051         private void chooseBestDisplayMode() {
00052                 if (screenDevice.isDisplayChangeSupported()) {
00053                         DisplayMode best = getBestDisplayMode();
00054                         if (best != null) {
00055                                 screenDevice.setDisplayMode(best);
00056                         }
00057                 }
00058         }
00059 
00063         private DisplayMode getBestDisplayMode() {
00064                 final DisplayMode[] availableModes = screenDevice.getDisplayModes();
00065                 int maxWidth = 0;
00066                 int maxDepth = 0;
00067                 DisplayMode bestSoFar = null;
00068                 for (DisplayMode m : availableModes) {
00069                         System.out.println(m.getWidth() + " x " + m.getHeight() + " " + m.getBitDepth());
00070                         if (m.getWidth() >= maxWidth) {
00071                                 maxWidth = m.getWidth();
00072                                 if (m.getBitDepth() >= maxDepth) {
00073                                         maxDepth = m.getBitDepth();
00074                                         bestSoFar = m;
00075                                 }
00076                         }
00077                 }
00078                 return bestSoFar;
00079         }
00080 
00084         public void setVisible(boolean b) {
00085                 if (b) {
00086                         screenDevice.setFullScreenWindow(this);
00087                         chooseBestDisplayMode();
00088                         super.setVisible(true);
00089                 } else {
00090                         screenDevice.setFullScreenWindow(null);
00091                         super.setVisible(false);
00092                 }
00093         }
00094 
00095 }

Generated on Sat Apr 14 18:21:35 2007 for R3 Paper Toolkit by  doxygen 1.4.7