2017-03-29 46 views
-1

Im不匹配Im在MacOS上使用Java。实际屏幕分辨率是2560x1600。但尺寸为1200x900或更高的JFrame不适合屏幕。实际JFrame大小与声明

JFrame frame = new JFrame(); 
frame.setBounds(0,0,1200,900); 
frame.setLayout(null); 
frame.setVisible(true); 

此外,该:

JFrame frame = new JFrame(); 
frame.setBounds(0,0,3000,3000); 
frame.setLayout(null); 
frame.setVisible(true); 
System.out.println(frame.getWidth() + "x" + frame.getHeight()); 

输出1280x773。为什么会发生这种情况以及如何处理?

编辑:有x2规模。可能是因为视网膜和操作系统配置。寻找改变这种规模的方法。

+4

'frame.setBounds(0,0,1200,900);'这是第一个错误。不要猜测一个框架的大小。将它打包以获得理想大小,或者调用['Frame.setExtendedState](Frame.MAXIMIZED_BOTH)'](http://docs.oracle.com/javase/8/docs/api/java/awt/Frame.html #setExtendedState-int-)..这是第二个错误。 'frame.setLayout(null);'我不会理解为什么,因为我们几乎每天都在处理它。搜索[tag:null-layout-manager]了解详细信息。 –

+1

另请参见[什么是XY问题?](http://meta.stackexchange.com/q/66377) –

+0

frame.setExtendedState(Frame.MAXIMIZED_BOTH)使框架完全填充屏幕,但其大小仍为1280x773。 – LvlDeath

回答

-1

尝试frame.pack()添加到您的代码在这里是你应该如何键入

JFrame frame = new JFrame(); 
    frame.setBounds(0,0,3000,3000); 
    frame.setLayout(null); 
    frame.setVisible(true); 

frame.pack(); System.out.println(frame.getWidth()+“x”+ frame.getHeight());

+0

输出:80x24。帧不能小我认为 – LvlDeath

0
JFrame frame = new JFrame(); 
    frame.setExtendedState(JFrame.MAXIMIZED_BOTH); 
    frame.setLocationRelativeTo(null); 
    frame.setLayout(null); 
    frame.setVisible(true); 
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 

    //============ or set Location to (0, 0) for this approach 

    Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize(); 
    int width = (int) screenSize.getWidth(); 
    int height = (int) screenSize.getHeight(); 

    frame.setSize(width, height); 
+0

输出:1280x800。因为它看起来是因为视网膜和一些操作系统的配置规模是X2。我正在寻找改变这个规模的方法 – LvlDeath