[問題] 如何手動觸發隱藏的awt元件呼叫paint()?

看板java作者時間16年前 (2008/03/01 19:57), 編輯推噓3(307)
留言10則, 2人參與, 最新討論串1/2 (看更多)
Hi, 由於某種原因, 我希望 java.awt.Canvas 在被加入到 JFrame 並顯示在螢幕上之前, 就先呼叫 canvas.paint(), 即: Canvas canvas = new Canvas(); ← 希望 new 完 Canvas 之後, 就能在這裡呼叫 canvas.paint() JFrame frame = new JFrame(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.getContentPane().add(canvas); frame.setVisible(true); 我知道這個要求很奇怪, 不過還是想請問該怎麼做? 謝謝! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.132.133.199

03/01 20:08, , 1F
沒有container應該畫出來也看不到吧
03/01 20:08, 1F

03/01 20:17, , 2F
我的目的不是讓它看得到,只要讓它呼叫到就好了
03/01 20:17, 2F

03/01 20:27, , 3F
你可以寫canvas.paint(canvas.getGraphics());
03/01 20:27, 3F

03/01 21:38, , 4F
謝謝你,我試了,但在canvas隱藏時,
03/01 21:38, 4F

03/01 21:40, , 5F
getGraphics()回傳的是null
03/01 21:40, 5F

03/01 23:26, , 6F
你不是只想呼叫? 只想呼叫這樣就夠啦XD
03/01 23:26, 6F

03/02 01:17, , 7F
我希望能執行paint()的程式碼,因為JME(一個 java game
03/02 01:17, 7F

03/02 01:20, , 8F
engine)把起始化程序放在Canvas子類別的paint()裡,在第一次
03/02 01:20, 8F

03/02 01:22, , 9F
paint()才做初始化,而我希望初始化在秀到螢幕上前就先做好
03/02 01:22, 9F

03/02 01:24, , 10F
,所以才想看看有沒有方法可以提早觸發paint()的呼叫
03/02 01:24, 10F
文章代碼(AID): #17oKIFqk (java)
文章代碼(AID): #17oKIFqk (java)