2014-01-14 59 views
0

所以我有一个java JFrame,我把一个画布放进去,它出现在错误的坐标上,好像它把0,0作为左下角,而不是左上角。这是我的代码。Java窗口坐标错误

JFrame frame = new JFrame("Test"); 
    frame.setSize(800,600); 
    frame.setLayout(null); 
    frame.setResizable(false); 

    final Canvas canvas = new Canvas(); 
    canvas.setBounds(0, 0, 500, 700); 
    canvas.setFocusable(true); 
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    frame.setLayout(null); 
    frame.add(canvas); 

    frame.setVisible(true); 

为什么不使用传统的窗口坐标(如0,0是左上角)?

+1

交换500和700 - 画布比当前窗口大。 – Njol

+0

认真,这是那么简单? * facepalm *谢谢 – DuskFall

+0

不同系统上的边框装饰插页可能会有所不同,这意味着尽管您可能能够“猜测”系统中可视区域的大小,但它会在不同的系统上发生变化。最好使用适当的布局管理器,如BorderLayout,以便能够更恰当地响应这些解决方案。正确使用getPreferredSize和pack将会产生更好的结果。您还应该小心混合天堂和重量轻的组件 – MadProgrammer

回答

0

试试这个:

canvas.setBounds(0, 0, 500, 600); //instead of 700 for height, your Canvas has height 600