總之,我想知道,如果我在已經大小的框架上調用JFrame.pack()
,分析它還是需要很長時間,還是會立即返回?我要求提高效率的原因。我的框架中有一張圖片在循環中每秒更新多次。現在JFrame.pack()
必須至少繪製第一張照片後才能調用,以確保該幀的尺寸合適。反覆使用JFrame.pack()的Swing - 效率如何?
爲了解決這個問題我有什麼(在僞代碼)是:
boolean flag = false
while (condition) {
getNextPicture();
updateFrameWithPicture()
if (!flag) {
frame.pack()
flag = true;
}
}
現在我在想,如果,如果我只是離開了該標誌的檢查,總是叫frame.pack()
就不會有問題。如果框架已經是正確的大小,程序能夠足夠快地決定嗎?
試試看看會發生什麼。然後你可以在這裏報告你的結果。雖然我懷疑你應該使用while循環,因爲你可能會阻塞Event Dispatch Thread並阻止它更新GUI。通常你會使用Swing Timer來安排更新。閱讀[Concurrency]上的Swing教程部分(http://docs.oracle.com/javase/tutorial/uiswing/concurrency/index.html)以獲取更多信息。該教程還包含「如何使用計時器」部分。 – camickr
@camickr當我顯示在RTP套接字上接收到的圖像時,我估計性能差異。我實際上使用了一個搖擺計時器 - 只是認爲用一個while循環來描述我的問題會更容易一些。 –