Re: [問題] Swing的調整視窗相關問題

看板java作者 (好一個算出 94 的專家~~~)時間14年前 (2012/01/01 02:52), 編輯推噓1(101)
留言2則, 1人參與, 最新討論串2/2 (看更多)
※ 引述《wqwdaniel (鳥儒)》之銘言: : 我最近在寫Swing的應用程式 : 但是遇到下列的問題 : 1. : 我layout設定好之後有些component會顯示而有些不會 : 而且每次run的時候顯示與否可能都會不一樣 : 解決方式就是我用滑鼠調整一下視窗就回復了 : 請問有沒有其他的解決方式?? : 是因為layout沒有寫好嗎?? 假設你使用的 component 在實作上都是正確的。 有使用 layout manager 的 container,通常會在適當的時機主動要求其使用的 layout manager 來 layout child components(視窗縮放是適當的時機之一)。 一個 component 執行某個操作而改變了狀態,而這個狀態改變會造成此 component 對空間的需求,通常會設計讓該操作主動去通知其 parent container 重新 layout,讓 parent container 執行 validate method 或由該 component 執行 revalidate method(for JComponent)。如果一個 container 已經是 displayable 狀態,之後去改變了其 child component 的狀態,而沒有再次 validate 該 container,是不會改變 container 的版面配置(除非造成 child component 改變的 操作本身有作 re-validate 相關的操作),比如說:一個視窗已經顯示在螢幕上, 再把一個 component 加到這個視窗裡,將無法看到剛加入的 component,因為他 的 size (通常)是 0 x 0,若經由明確地要求其 parent 作 validate 後,component 會被設定成/到一個特定的大小/位置,component 就能成為"可見"。 : 2. : 我呼叫了滑鼠拖移的方法,元件當被拖移到適當的位置之後 : 我新增了新元件,而如同第一次的問題一樣 : 因為我新增看不到所以我又重新調整視窗 : 結果因為window 被 resize之後所有的元件都跑回最剛開始的地方 : 我有找尋一些原因,是因為validate嗎?? : 我想要的預期效果是 : 如果視窗被放大,裡面的元件還是原封不動在的原地 : 彼此間的距離不會因而增加 : 希望各位可以解答我的疑惑 : 謝謝~ 想隨意擺放/設置 component 的位置/大小,通常就是不使用 layout manager,或是 使用取名類似 AbsoluteLayout 之類的 layout manager(component's location/size 就是其在 layout 用途上的 constraints)。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.45.28.23 ※ 編輯: sbrhsieh 來自: 114.45.28.23 (01/01 13:53)

01/08 01:54, , 1F
謝謝你的教學文 我也再花許多時間找到相關的資料
01/08 01:54, 1F

01/08 01:58, , 2F
由於新生時課程swing只有淺酌 我會把這些資訊跟大家說
01/08 01:58, 2F
文章代碼(AID): #1E_rdvOQ (java)
文章代碼(AID): #1E_rdvOQ (java)