[問題] 請問用dispose關閉frame的方法

看板java作者 (小罐的吃太快)時間16年前 (2008/06/24 01:21), 編輯推噓1(103)
留言4則, 2人參與, 最新討論串1/1
簡介: 有2個frame,用第一個frame上的按鈕來控制第二個frame的開關。 每一次開啟第二個frame都要抓螢幕上的圖做為第二個frame的背景, 但是一直無法成功,只有第一次開起來時會抓, 關掉再開不會抓新的螢幕畫面,還是顯示舊畫面。 開:frame2.pack(); frame2.setVisible(true); 關:frame2.dispose(); --------------------------------------------- 詳細問題內容: 我做了2個frame: frame1上有按鈕,按了以後會抓取螢幕畫面, 然後建立frame2,將抓取的畫面做為frame2的背景。 然後如果再按一下frame1上這個按鈕,則可將frame2關掉。 而frame1視窗一直都在畫面上沒有被關掉。 可是有2個問題一直想不出解決的辦法: 問題1: 當我按下frame1的按鈕來關閉frame2後 → frame2.dispose(); 再按一下按鈕建立新的frame2,frame2的背景還是第一次所抓的螢幕畫面, 而不是我這次按下時抓的螢幕畫面… 不管我螢幕變成什麼畫面,新建立的frame2總是會顯示第一次抓的畫面… 看了一下dispose()的說明,好像是將frame的component釋出, 但下次再建立此frame,則會回到上一次的狀態... 請問我要怎麼樣每次建立frame2時,都抓到最新的螢幕畫面呢? 問題2: 因為我的frame2的背景是抓取整個螢幕而來的, 所以會連frame1的視窗畫面也抓下來,放入frame2。 此時如果我把frame1移到旁邊,則會看到原處有frmae1的畫面, 變成螢幕上有2個frame1的畫面。 我不想frame1視窗畫面被抓下來,所以在想解決方法。 目前是想到,在按下按鈕時,先將frame1縮至工作列, 然後抓取螢幕,放入frame2。然後再將frame1恢復。 不過我不知道要怎麼用frame1裡的panel上的按鈕來控制frame1… 以下是我的程式碼: http://www.badongo.com/pic/3841262 DFrame(就是frame1)含有CPanel,CPanel裡放入1個按鈕,並監聽此按鈕。 此按鈕可以建立或關閉frame2,frame2含有DrawPanel,DrawPanel可以抓螢幕畫面。 圖中只有右邊下面那個有註明的是真正的視窗, 其他所有地方包括下面的工作列都是frame2的背景(全螢幕)。 問題很長,謝謝大家有耐心看完~ 煩麻各位高手給我一點建議。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.120.213.208 ※ 編輯: woodymonkey 來自: 140.120.213.208 (06/24 01:24)

06/24 03:08, , 1F
你是不是應該要先從container remove掉舊panel?
06/24 03:08, 1F

06/25 16:20, , 2F
原來是remove啊!謝謝樓上解決了我第一個問題!
06/25 16:20, 2F

06/25 16:23, , 3F
那再請問一下我要如何從panel中控制frame的行為啊?
06/25 16:23, 3F

06/25 16:29, , 4F
我的frame和panel寫在不同檔案。 謝謝幫忙~ ^^
06/25 16:29, 4F
文章代碼(AID): #18Nzkjqd (java)