2014-03-05 31 views
1

我的觀察者模式對我的JDialog工作正常,當我的觀察者被更改時調用update(),正如我所期望的那樣。我也跟蹤觀察者數量(在JDialog打開時爲1)。設置JDialog模塊的形式觀察者

我現在試圖設置我的JDialog的Modality,以使我的主窗口在對話框打開時不可用。但是,如果我使用

dialog.setModalityType(ModalityType.APPLICATION_MODAL); 

我再也看不到我的JDialog在我觀察的對象,和更新()不會被調用。它看起來好像沒有正確設置觀察者。

任何人都可以揭示出這個任意光?我能做些什麼來解決這個問題?

回答

4

通常這個問題是由於沒有考慮到程序流程的順序造成的。

確保您設置觀察員充分,包括將所有的聽衆和開始任何和所有進程設置對話框中可見。如果您在之後執行任何此顯示對話框,它將被阻止,直到對話框返回。

如需更具體的幫助,請考慮創建併發布minimal example program

+0

完美的感謝,不敢相信我沒有想到! –

+0

@LexWebb:所有的Swing程序員遲早都會得到這一點。現在當這裏彈出一個類似的問題時,你可以傳遞這個信息。 –