Search code examples
javaswingcastingjframetoolkit

Why getting screen size from Toolkit yields different results depending if there´s a JFrame or not


Code without frame

Code with frame

The images show the 2 different codes so I want to know why the result of the screen size in both codes varies depending on whether a JFrame was created before the call or not.

As the image shows when there's not JFrame it returns a different result than the one it returns when there's not a JFrame created yet at the moment of the call so any explanation on this phenomena would be appreciated.


Solution

  • I didn't have any issues. You might want to elaborate on your system properties

    Without frame...

    import java.awt.Toolkit;
    
    public class Test {
    
        static double screenWidth = Toolkit.getDefaultToolkit().getScreenSize().getWidth();
        static double screenHeight = Toolkit.getDefaultToolkit().getScreenSize().getHeight();
    
        static double screenWidth2;
        static double screenHeight2;
    
        public static void main(String[] args) {
            new Test();
    
            System.out.println("screenWidth = " + screenWidth + " ~ " + screenWidth2);
            System.out.println("screenHeight = " + screenHeight + " ~ " + screenHeight2);
        }
    
        public Test() {
            screenWidth2 = Toolkit.getDefaultToolkit().getScreenSize().getWidth();
            screenHeight2 = Toolkit.getDefaultToolkit().getScreenSize().getHeight();
        }
    }
    

    Outputs...

    screenWidth = 1792.0 ~ 1792.0
    screenHeight = 1120.0 ~ 1120.0
    

    With Frame

    import java.awt.Toolkit;
    import javax.swing.JFrame;
    
    public class Test2 extends JFrame {
    
        static double screenWidth = Toolkit.getDefaultToolkit().getScreenSize().getWidth();
        static double screenHeight = Toolkit.getDefaultToolkit().getScreenSize().getHeight();
    
        static double screenWidth2;
        static double screenHeight2;
    
        public static void main(String[] args) {
            new Test2();
    
            System.out.println("screenWidth = " + screenWidth + " ~ " + screenWidth2);
            System.out.println("screenHeight = " + screenHeight + " ~ " + screenHeight2);
        }
    
        public Test2() {
            screenWidth2 = Toolkit.getDefaultToolkit().getScreenSize().getWidth();
            screenHeight2 = Toolkit.getDefaultToolkit().getScreenSize().getHeight();
        }
    }
    

    Outputs

    screenWidth = 1792.0 ~ 1792.0
    screenHeight = 1120.0 ~ 1120.0
    

    System Properties

    • OS: macOS Catalina, 10.15.4
    • Java: 11.0.1