我搞砸了一些代碼,並遇到了假設找到窗口的「最佳」大小的包方法。但是當我嘗試出來時,儘管我在調用pack()之前繪製了一個圓圈,但它只是儘可能小的一個窗口。這是爲什麼? pack()查找哪些元素?我也經常發現使用pack()和setSize()的代碼,Oracle明確表示不這樣做。既然他們都設置了大小,那麼它有什麼意義呢pack()如何工作,它看起來是什麼
下面是代碼的一部分櫃面這是我是誰做錯了什麼:
public void paint(Graphics g) {
super.paint(g);
g.fillOval(x, y, 30, 30);
}
public static void main(String[] args) throws InterruptedException {
JFrame frame = new JFrame("Extreme Pong");
Game game = new Game();
frame.add(game);
frame.pack();
}
編輯: 很顯然,我不是不明白你們中的大多數,因爲鏈接的答案,「重複」做不回答我的問題。瘋狂的程序員確實回答了我的問題,所以非常感謝你。
包()依賴於組件的首選尺寸。如果使用JPanel子類進行繪製,則應該重寫paintComponent()而不是paint(),並且應該重寫getPreferredSize()。 –
Oracle說不要覆蓋paintComponent,而是使用paint,因爲它調用所有的paint(包括paintComponent)。另外爲什麼我會重寫一個getter?另外我如何使用它來使包裝正常工作? – LegoNinja39
*「Oracle說不覆蓋paintComponent並使用paint代替..」* Oracle在哪裏提供建議?請鏈接.. –