我有這一段代碼pack()的後奇:JFrame的大小
frame.setTitle("SideScroller");
frame.setDefaultCloseOperation(EXIT_ON_CLOSE);
Dimension dim = new Dimension(1000, 500);
frame.setContentPane(gamePanel); //gamePanel is an extended JPanel
gamePanel.setPreferredSize(dim);
frame.pack();
後運行此代碼並填充gamePanel
與50x50p份,應填充gamePanel
因此frame
完全,在屏幕的右側和底部有一些空的像素行。
frame.getSize(); //gives us: 1016 x 539
frame.getInsets(); //gives: Top: 31 | Left: 8 | Bottom: 8 | Right: 8
結果的圖像:
正如你可以看到,仍有一些空房間在JFrame
。
的代碼來填充gamePanel
:
//Fill the panel with landscape
//One part : 50x50 px
//Panel : 1000x500 px
//Width : 20 prts
//Height : 10 prts
@Override
public void paint(Graphics g){
super.paint(g);
for(int i = 0; i < 20; i++){
for(int j = 0; j < 10; j++){
//Decide which landscape-img should be used
switch(levelOne[j][i]){
case 0:g.drawImage(new ImageIcon("resources\\landscape-img\\air.png")
.getImage(), 50 * i, 50 * j, null);
break;
case 1:g.drawImage(new ImageIcon("resources\\landscape-img\\ground.png")
.getImage(), 50 * i, 50 * j, null);
break;
}
}
}
g.dispose();
}
我不明白爲什麼frame
沒有完全填滿。希望可以有人幫幫我!
好像問題是那些JFrame的插圖。您設置的首選項大小與您返回的大小值之間的差異正是插入內容。所以也許你需要創建一個帶有0值的Insets並調用JFrame.setInsets? – ControlAltDel 2014-09-26 17:50:31
@ControlAltDel現在嘗試,謝謝你的建議。 – ikhebgeenaccount 2014-09-26 17:51:34
我還發現,在其中UI充當了這樣的時候,它可以幫助啓動會與其說setContentPane與面板向後......,如何將它添加到預先存在的contentPane(用正確的佈局)看看這是怎麼回事? – ControlAltDel 2014-09-26 17:52:40