net.jinx.gui
Class GameWindow

java.lang.Object
  extended by java.awt.Component
      extended by java.awt.Container
          extended by java.awt.Window
              extended by java.awt.Frame
                  extended by javax.swing.JFrame
                      extended by net.jinx.gui.GameWindow
All Implemented Interfaces:
java.awt.image.ImageObserver, java.awt.MenuContainer, java.io.Serializable, javax.accessibility.Accessible, javax.swing.RootPaneContainer, javax.swing.WindowConstants

public class GameWindow
extends javax.swing.JFrame

GameWindow is a specialized JFrame that makes using fullscreen-exclusive mode easier, using an extra method: setFullscreen(boolean). It automatically takes care of setting up the window as either decorated or undecorated when the window switches back and forth from fullscreen mode, while still paying attention to whether or not the window was decorated in windowing mode.

You can set the display mode for the screen using the setDisplayMode(DisplayMode) method.

There are two constructors; one for the default GraphicsDevice and one that lets you choose the GraphicsDevice you want to use.

API Stability: Alpha; the overriden setUndecorated(boolean) method will hopefully be removed in a future release. Currently there is no way to use the native operating system decorations with the window unless you're using a native look and feel.

See Also:
Serialized Form

Nested Class Summary
 
Nested classes/interfaces inherited from class javax.swing.JFrame
javax.swing.JFrame.AccessibleJFrame
 
Nested classes/interfaces inherited from class java.awt.Frame
java.awt.Frame.AccessibleAWTFrame
 
Nested classes/interfaces inherited from class java.awt.Window
java.awt.Window.AccessibleAWTWindow
 
Nested classes/interfaces inherited from class java.awt.Container
java.awt.Container.AccessibleAWTContainer
 
Nested classes/interfaces inherited from class java.awt.Component
java.awt.Component.AccessibleAWTComponent, java.awt.Component.BaselineResizeBehavior, java.awt.Component.BltBufferStrategy, java.awt.Component.FlipBufferStrategy
 
Field Summary
 
Fields inherited from class javax.swing.JFrame
accessibleContext, EXIT_ON_CLOSE, rootPane, rootPaneCheckingEnabled
 
Fields inherited from class java.awt.Frame
CROSSHAIR_CURSOR, DEFAULT_CURSOR, E_RESIZE_CURSOR, HAND_CURSOR, ICONIFIED, MAXIMIZED_BOTH, MAXIMIZED_HORIZ, MAXIMIZED_VERT, MOVE_CURSOR, N_RESIZE_CURSOR, NE_RESIZE_CURSOR, NORMAL, NW_RESIZE_CURSOR, S_RESIZE_CURSOR, SE_RESIZE_CURSOR, SW_RESIZE_CURSOR, TEXT_CURSOR, W_RESIZE_CURSOR, WAIT_CURSOR
 
Fields inherited from class java.awt.Component
BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENT
 
Fields inherited from interface javax.swing.WindowConstants
DISPOSE_ON_CLOSE, DO_NOTHING_ON_CLOSE, HIDE_ON_CLOSE
 
Fields inherited from interface java.awt.image.ImageObserver
ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH
 
Constructor Summary
GameWindow()
          Constructs a GameWindow for the default GraphicsDevice object (usually the primary screen).
GameWindow(java.awt.GraphicsDevice device)
          Constructs a GameWindow for device.
 
Method Summary
static void forcedWindowedMode()
          Forces all GraphicsDevice objects for this system into windowed mode.
static java.awt.DisplayMode getDefaultMode(java.awt.GraphicsDevice device)
          Provides a way to determine the default DisplayMode for a given GraphicsDevice.
 java.awt.GraphicsDevice getGraphicsDevice()
          Provides the GraphicsDevice from the constructor.
 boolean isFullScreen()
          Provides a way to determine if this GameWindow is being displayed in full-screen mode.
 boolean isUndecorated()
          Overriden to work along with the overriden setUndecorated(boolean) method.
 void load(Hierarchy h)
          Configures this GameWindow from a Hierarchy.
 void setDisplayMode(java.awt.DisplayMode mode)
          Sets the DisplayMode this GameWindow will use in fullscreen mode.
 void setFullScreen(boolean fullscreen)
          Puts this GameWindow into fullscreen-exclusive mode, or drops back to windowing mode depending on the value of fullscreen.
 void setSize(java.awt.DisplayMode mode)
          Sets the size of this GameWindow according to a DisplayMode's width and height.
 void setUndecorated(boolean undecorated)
          Overriden to change window decoration styles instead of changing whether or not the window is decorated by the native operating system.
static void setWindowed(java.awt.GraphicsDevice device)
          Forces device back to windowed mode.
 
Methods inherited from class javax.swing.JFrame
addImpl, createRootPane, frameInit, getAccessibleContext, getContentPane, getDefaultCloseOperation, getGlassPane, getGraphics, getJMenuBar, getLayeredPane, getRootPane, getTransferHandler, isDefaultLookAndFeelDecorated, isRootPaneCheckingEnabled, paramString, processWindowEvent, remove, repaint, setContentPane, setDefaultCloseOperation, setDefaultLookAndFeelDecorated, setGlassPane, setIconImage, setJMenuBar, setLayeredPane, setLayout, setRootPane, setRootPaneCheckingEnabled, setTransferHandler, update
 
Methods inherited from class java.awt.Frame
addNotify, getCursorType, getExtendedState, getFrames, getIconImage, getMaximizedBounds, getMenuBar, getState, getTitle, isResizable, remove, removeNotify, setCursor, setExtendedState, setMaximizedBounds, setMenuBar, setResizable, setState, setTitle
 
Methods inherited from class java.awt.Window
addPropertyChangeListener, addPropertyChangeListener, addWindowFocusListener, addWindowListener, addWindowStateListener, applyResourceBundle, applyResourceBundle, createBufferStrategy, createBufferStrategy, dispose, getBufferStrategy, getFocusableWindowState, getFocusCycleRootAncestor, getFocusOwner, getFocusTraversalKeys, getGraphicsConfiguration, getIconImages, getInputContext, getListeners, getLocale, getModalExclusionType, getMostRecentFocusOwner, getOwnedWindows, getOwner, getOwnerlessWindows, getToolkit, getWarningString, getWindowFocusListeners, getWindowListeners, getWindows, getWindowStateListeners, hide, isActive, isAlwaysOnTop, isAlwaysOnTopSupported, isFocusableWindow, isFocusCycleRoot, isFocused, isLocationByPlatform, isShowing, pack, postEvent, processEvent, processWindowFocusEvent, processWindowStateEvent, removeWindowFocusListener, removeWindowListener, removeWindowStateListener, reshape, setAlwaysOnTop, setBounds, setBounds, setCursor, setFocusableWindowState, setFocusCycleRoot, setIconImages, setLocationByPlatform, setLocationRelativeTo, setMinimumSize, setModalExclusionType, setSize, setSize, setVisible, show, toBack, toFront
 
Methods inherited from class java.awt.Container
add, add, add, add, add, addContainerListener, applyComponentOrientation, areFocusTraversalKeysSet, countComponents, deliverEvent, doLayout, findComponentAt, findComponentAt, getAlignmentX, getAlignmentY, getComponent, getComponentAt, getComponentAt, getComponentCount, getComponents, getComponentZOrder, getContainerListeners, getFocusTraversalPolicy, getInsets, getLayout, getMaximumSize, getMinimumSize, getMousePosition, getPreferredSize, insets, invalidate, isAncestorOf, isFocusCycleRoot, isFocusTraversalPolicyProvider, isFocusTraversalPolicySet, layout, list, list, locate, minimumSize, paint, paintComponents, preferredSize, print, printComponents, processContainerEvent, remove, removeAll, removeContainerListener, setComponentZOrder, setFocusTraversalKeys, setFocusTraversalPolicy, setFocusTraversalPolicyProvider, setFont, transferFocusBackward, transferFocusDownCycle, validate, validateTree
 
Methods inherited from class java.awt.Component
action, add, addComponentListener, addFocusListener, addHierarchyBoundsListener, addHierarchyListener, addInputMethodListener, addKeyListener, addMouseListener, addMouseMotionListener, addMouseWheelListener, bounds, checkImage, checkImage, coalesceEvents, contains, contains, createImage, createImage, createVolatileImage, createVolatileImage, disable, disableEvents, dispatchEvent, enable, enable, enableEvents, enableInputMethods, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, getBackground, getBaseline, getBaselineResizeBehavior, getBounds, getBounds, getColorModel, getComponentListeners, getComponentOrientation, getCursor, getDropTarget, getFocusListeners, getFocusTraversalKeysEnabled, getFont, getFontMetrics, getForeground, getHeight, getHierarchyBoundsListeners, getHierarchyListeners, getIgnoreRepaint, getInputMethodListeners, getInputMethodRequests, getKeyListeners, getLocation, getLocation, getLocationOnScreen, getMouseListeners, getMouseMotionListeners, getMousePosition, getMouseWheelListeners, getName, getParent, getPeer, getPropertyChangeListeners, getPropertyChangeListeners, getSize, getSize, getTreeLock, getWidth, getX, getY, gotFocus, handleEvent, hasFocus, imageUpdate, inside, isBackgroundSet, isCursorSet, isDisplayable, isDoubleBuffered, isEnabled, isFocusable, isFocusOwner, isFocusTraversable, isFontSet, isForegroundSet, isLightweight, isMaximumSizeSet, isMinimumSizeSet, isOpaque, isPreferredSizeSet, isValid, isVisible, keyDown, keyUp, list, list, list, location, lostFocus, mouseDown, mouseDrag, mouseEnter, mouseExit, mouseMove, mouseUp, move, nextFocus, paintAll, prepareImage, prepareImage, printAll, processComponentEvent, processFocusEvent, processHierarchyBoundsEvent, processHierarchyEvent, processInputMethodEvent, processKeyEvent, processMouseEvent, processMouseMotionEvent, processMouseWheelEvent, removeComponentListener, removeFocusListener, removeHierarchyBoundsListener, removeHierarchyListener, removeInputMethodListener, removeKeyListener, removeMouseListener, removeMouseMotionListener, removeMouseWheelListener, removePropertyChangeListener, removePropertyChangeListener, repaint, repaint, repaint, requestFocus, requestFocus, requestFocusInWindow, requestFocusInWindow, resize, resize, setBackground, setComponentOrientation, setDropTarget, setEnabled, setFocusable, setFocusTraversalKeysEnabled, setForeground, setIgnoreRepaint, setLocale, setLocation, setLocation, setMaximumSize, setName, setPreferredSize, show, size, toString, transferFocus, transferFocusUpCycle
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface java.awt.MenuContainer
getFont, postEvent
 

Constructor Detail

GameWindow

public GameWindow()
Constructs a GameWindow for the default GraphicsDevice object (usually the primary screen).


GameWindow

public GameWindow(java.awt.GraphicsDevice device)
Constructs a GameWindow for device.

Parameters:
device - the GraphicsDevice to use for full-screen mode.
Method Detail

getGraphicsDevice

public java.awt.GraphicsDevice getGraphicsDevice()
Provides the GraphicsDevice from the constructor. This can be handy for choosing a display mode.

Returns:
the GraphicsDevice.

isFullScreen

public boolean isFullScreen()
Provides a way to determine if this GameWindow is being displayed in full-screen mode.

Returns:
true if this GameWindow is being displayed in full-screen mode.

load

public void load(Hierarchy h)
Configures this GameWindow from a Hierarchy.

Parameters:
h - the Hierarchy.

isUndecorated

public boolean isUndecorated()
Overriden to work along with the overriden setUndecorated(boolean) method.

Overrides:
isUndecorated in class java.awt.Frame
Returns:
true if this GameWindow is undecorated.

setUndecorated

public void setUndecorated(boolean undecorated)
Overriden to change window decoration styles instead of changing whether or not the window is decorated by the native operating system. This is a work-around for certain problems I was unable to iron out and will be removed when I figure out how to make this work with the native decorations.

Overrides:
setUndecorated in class java.awt.Frame
Parameters:
undecorated - the flag indicating if this GameWindow should be undecorated.

setSize

public void setSize(java.awt.DisplayMode mode)
Sets the size of this GameWindow according to a DisplayMode's width and height.

Parameters:
mode - the DisplayMode with size data.

setDisplayMode

public void setDisplayMode(java.awt.DisplayMode mode)
Sets the DisplayMode this GameWindow will use in fullscreen mode. If it's already in fullcreen mode, then the DisplayMode will be switched immediately.

Parameters:
mode - the DisplayMode.

setFullScreen

public void setFullScreen(boolean fullscreen)
Puts this GameWindow into fullscreen-exclusive mode, or drops back to windowing mode depending on the value of fullscreen. If fullcreen mode isn't supported, this will do nothing. This will remove window decorations when switching to fullscreen and then restore them to the state they were in when switching back.

Parameters:
fullscreen - flag indicating if we're switching to or from fullscreen mode. True means switch to fullscreen and false means switch back to windowed mode if this GameWindow is fullscreen.

forcedWindowedMode

public static void forcedWindowedMode()
Forces all GraphicsDevice objects for this system into windowed mode. This method respects GameWindow objects and will call setFullscreen(false) on them if they're in fullscreen mode.


setWindowed

public static void setWindowed(java.awt.GraphicsDevice device)
Forces device back to windowed mode. This takes care of hiding and showing any Window that is fullscreen when this method is called (if you switch to fullscreen mode while the Window is visible, it can cause problems, at least on my system). This method respects GameWindow objects and will call setFullscreen(false) on them if they're in fullscreen mode.

Parameters:
device - the GraphicsDevice to force into windowed mode.

getDefaultMode

public static java.awt.DisplayMode getDefaultMode(java.awt.GraphicsDevice device)
Provides a way to determine the default DisplayMode for a given GraphicsDevice. Be careful of this method