Re: [問題] 寫好的swing在不同OS下跑的問題

看板java作者 (蒼穹之下任我行)時間8年前 (2015/10/26 13:35), 編輯推噓2(202)
留言4則, 1人參與, 最新討論串2/2 (看更多)
※ 引述《defsrisars (阿轉)》之銘言: : 標題: [J2SE] 寫好的swing在不同OS下跑的問題 : 時間: Sat Oct 24 20:58:15 2015 : : 如題 : 小的最近剛學swing : 在macbook上用eclipse寫了一個很陽春的通訊錄 : jdk版本跟windows的桌電一樣是 8u65 64bit : 只是選的OS不同 : : 但是寫完以後在macbook跑一切正常 : 如圖 : http://i.imgur.com/j1cEo13.jpg
: : 但是同樣的原始檔或是.jar移到windows都是這樣 : : http://i.imgur.com/UOph2m7.jpg
: : 我用的元件都是很一般的JButton之類的東西 : 也有嘗試加repaint之類的程式碼 : : 請問有人有概念這會是啥摸問題嗎 : 感激不盡QQ : : --- : 附上程式碼給大家參考好了QQ : 我對問題出在哪整個沒什麼概念.. : Java可攜性高 而且是跑在JVM 我的JDK版本也是相同的 : 跑在Windows和MAC上的程式碼也是一模一樣的 : 不知道問題是出在程式碼.compiler還是哪裡QQ : Main : http://pastie.org/10502060 : FrameInitialize : http://pastie.org/10502064 : ButtonListener : http://pastie.org/10502077 : BtnAddLis : http://pastie.org/10502055 : : 謝謝大家 : -- : ※ 編輯: defsrisars (1.165.77.155), 10/25/2015 17:06:46 : 推 yichen: http://pastie.org/10502055#32 把這行setVisible移到最下 10/25 18:11 : → yichen: 面加完所有panel之後試試看 10/25 18:12 : 天啊...可以了!!! : 感覺是很基本的東西... : 可以請問原理大概是什麼嗎QQ : 我目前只能想像是因為他在setVisible(true)的時候繪畫 : 可是為什麼mac可以 windows卻會被這個影響呀 : 原來setVisible寫在最後面那麼重要... 在setVisible之後, JFrame就認為已經處理好畫面上的東西,所以除非當畫面需要重畫 例如視窗被拉大縮小,呼叫pack(), validate()等, JFrame不見得會主動重畫, 就算是新加物件 進去也一樣. 這個也不是mac就可以, windows就會被影響, 而是根本不能確認JFrame什麼時候會重畫 所以其實mac上是運氣好, windows上在執行的順序或是視窗剛好觸發要JFrame重畫的時候 可能windows上的畫面也會看起來OK : : 另外想請問 : 雖然元件都看的見了 : 可是TextArea卻無法輸入 : 我有試過在最下面加setVisible跟setEditable都還是無法 : 可以請問一下這個應該怎麼修嗎QQ : 謝謝~~ : : 謝謝您的提點!! 簡單的來說, 你沒有足夠的空間讓JTextPane去顯示 看到的結果: http://i.imgur.com/33Cp9Mf.png
視窗拉大之後: http://i.imgur.com/LNYBsyn.png
視窗拉寬之後: http://i.imgur.com/yzBFkpC.png
另外, 如果只是要取得單行字串, 用JTextField就可以了, 殺雞不需要用牛刀 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 60.244.41.5 ※ 文章網址: https://www.ptt.cc/bbs/java/M.1445837732.A.5E1.html

10/28 08:55, , 1F
謝謝您的解釋!我真的懂了~~
10/28 08:55, 1F

10/28 08:59, , 2F
不過我覺得在很多地方我都只是大概知道每個指令的用法
10/28 08:59, 2F

10/28 08:59, , 3F
,而不知道其背後繪圖的原理和機制
10/28 08:59, 3F

10/28 09:00, , 4F
謝謝您花時間看我的程式為我解答
10/28 09:00, 4F
文章代碼(AID): #1MBRkaNX (java)
文章代碼(AID): #1MBRkaNX (java)