作者Makoto0813 (多愁善感的中學二年級生)
看板java
標題[問題] 如何在視窗輸入參數後,繼續執行main?
時間Wed Dec 5 09:18:34 2012
我寫了一個視窗介面來輸入我這個程式要的參數
我知道用JOption也可以...只是想要一次全部輸入秀出來,所以還是用JFrame
,我設定一個布林變數done來判斷是否有完成輸入,在視窗開啟之後,寫一個while
去等待,當done變成true時才能離開no op的while loop繼續往下做,
結果發現每次輸入完之後,while都不會停...但若是把while拿掉,還沒等到參數輸入完成
它就往下做了。
我在想會不會是java把while那段執行放到另一個cpu上做了,所以當裡面判斷式的布林
值改變了,但是他沒有即刻更新....請問這個問題該怎解呢?
以下是有問題的程式碼:
//座標初始設成無效的數值,用來辨認參數是否有在GUI介面被寫入
Coordinate tip=new Coordinate(-50,-50);
Coordinate root=new Coordinate(-50,-50);
ManualInputPanel manual=new ManualInputPanel(fileName,tip,root);
manual.setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE);
manual.setSize(800,200);
manual.setVisible(true);
//等待參數輸入完成(這個部分試過用isvisible()或是isshowing()結果都一樣
while(!manual.isDone())
{
;
}
manual.setVisible(false);
double dis=Coordinate.distance(tip, root);
//做尺寸正規化
Scaling scale=new Scaling(new ScaleNormalize(dis).getScale(),spareImg);
gray=scale.getImg();
writebmp.SaveGray(output+"8-大小正規化-"+FileName,gray);
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 175.181.120.39
※ 編輯: Makoto0813 來自: 175.181.120.39 (12/05 09:19)
推 LaPass:通常視窗類的程式會有自己的執行緒。 12/05 09:25
→ LaPass:還有,卡住執行緒盡量不要用迴圈,用block之類的東西比較好 12/05 09:31
意思是說要做同步處裡thread的意思嗎? 是要繼承runnable去做的意思嗎?
推 swpoker:你要實作listener才是~好奇問一句~你是一個JAVA寫到底嗎 12/05 09:45
→ Makoto0813:1個java寫到底? 不太確定你的意思,我沒有內嵌其他語言 12/05 09:52
→ Makoto0813:請問關於listener可以說詳細一點嗎,不知可用哪一種 12/05 11:18
※ 編輯: Makoto0813 來自: 175.181.120.39 (12/05 11:21)