I would like to get the effective screen size. That is: the size of the screen without the taskbar (or the equivalent on Linux/Mac).
I am currently using...
component.getGraphicsConfiguration().getBounds()
...and subtracting the default taskbar size depending on the OS, but I would like a way that works even if the user has resized/moved the taskbar.
GraphicsEnvironment has a method which returns the maximum available size, accounting all taskbars etc. no matter where they are aligned:
GraphicsEnvironment.getLocalGraphicsEnvironment().getMaximumWindowBounds()
Note: On multi-monitor systems, getMaximumWindowBounds()
returns the bounds of the entire display area. To get the usable bounds of a single display, use GraphicsConfiguration.getBounds()
and Toolkit.getScreenInsets()
as shown in other answers.