2014-01-14 108 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