基本上我有一個遊戲,當有事情發生時調出JOptionPane,我希望能夠在用戶點擊是時返回到遊戲。有點像一個取消暫停功能YES_NO_OPTION JOptionPane在'yes'上繼續java代碼
回答
注意:當我發佈這個答案時,問題是完全不同的 - 閱讀評論。
由於OpenJDK是開放源代碼(GNU通用公共許可證第2版),因此您可以查看其源代碼。我通常在grepcode.com上瀏覽Java源代碼。如果您安裝了OracleJDK並選擇了安裝源的選項,那麼您還可以在JDK安裝目錄(src.zip)中找到大部分源代碼。只要注意,這個許可證可能不允許你爲自己重用這些代碼(通常是相同的)(但它肯定比使用反編譯器好得多)。
這些指向特定方法的鏈接不適用於我最喜歡的瀏覽器(基於Chrome的Vivaldi)。如果你不想自己去尋找特定的方法,我建議你使用Firefox。
下面是grepcode.com相關片段:
JOptionPane (constructor) - 這是由每show...Dialog
方法叫:
1830 public JOptionPane(Object message, int messageType, int optionType,
1831 Icon icon, Object[] options, Object initialValue) {
...
1838 setOptionType(optionType);
...
1841 updateUI();
1842 }
1877 public void updateUI() {
1878 setUI((OptionPaneUI)UIManager.getUI(this));
1879 }
在這裏,我們看到, JOptionPane
請求中的。 OptionPaneUI
是一個抽象類(看起來更像一個接口),所以你在那裏找不到任何代碼。其唯一的小類是BasicOptionPaneUI
或MultiOptionPaneUI
。使用調試器,我發現它是BasicOptionPaneUI
對於showConfirmDialog
。之後,將結果傳遞到JComponent
繼承的setUI
方法。除了一些基本的現場檢查,它會調用ui.installUI方法:
137 public void installUI(JComponent c) {
138 optionPane = (JOptionPane)c;
139 installDefaults();
140 optionPane.setLayout(createLayoutManager());
141 installComponents();
142 installListeners();
143 installKeyboardActions();
144 }
讓我們來看看installComponents下一個:
171 protected void More ...installComponents() {
172 optionPane.add(createMessageArea());
173
174 Container separator = createSeparator();
175 if (separator != null) {
176 optionPane.add(separator);
177 }
178 optionPane.add(createButtonArea());
179 optionPane.applyComponentOrientation(optionPane.getComponentOrientation());
180 }
createButtonArea聲音很有前途:
613 protected Container createButtonArea() {
614 JPanel bottom = new JPanel();
...
630 addButtonComponents(bottom, getButtons(), getInitialValueIndex());
631 return bottom;
632 }
這種方法現在要求addButtonComponents 。這種方法在這裏複製太長,但是,總之,它獲取按鈕的特定於語言環境的字符串並將它們添加爲JButton s。然後它給每個人一個ButtonActionListener。
這是很好的知道,但並沒有真正回答我如何返回遊戲的問題? – Eishknaar
@Eishknaar恩,你幾乎編輯你的問題,只保留1個字(不包括文章和代詞)。我相信這個答案對你的原始問題是有效的,而我同意它與你的編輯無關。 – Nulano
@Eishknaar關於這個新的非暫停問題,你只需要閱讀文檔。 JOptionPane默認爲模態對話框。這意味着,顯示JOptionPane的調用將被阻止,直到JOptionPane關閉,此時show方法返回並繼續您的代碼。 JOptionPane的輸入類型不受任何影響。 http://docs.oracle.com/javase/tutorial/uiswing/components/dialog.html#create – Nulano
- 1. JOptionPane YES NOOPTION
- 2. 我在Java中的JOptionPane不會繼續到下一個窗口?
- 3. 代碼繼續問題?
- 4. 如何繼續通過代碼迭代
- 5. JOptionPane的選擇Yes/No確認對話框問題
- 6. SemaphoreSlim.WaitAsync繼續碼
- 7. 在Java /硒繼續命令
- 8. 如何打開2繼續在c#代碼後面繼續優化
- 9. 錯誤時繼續執行代碼
- 10. 停止代碼X秒,然後繼續
- 11. JSON失敗並繼續執行代碼
- 12. Visual Studio代碼 - 編輯並繼續
- 13. Process.Start()並繼續使用我的代碼
- 14. 代碼不能繼續以onpostexecute
- 15. Java JOptionPane
- 16. PHP在前代函數完成之前繼續執行代碼
- 17. 從Yes重命名Javascript確認消息框標籤以繼續
- 18. 在繼續使用Java中的println之前,如何讓代碼等待對象?
- 19. Java不會繼續while()
- 20. UISplitViewController StoryBoards繼續取代detailview
- 21. 繼續n次迭代
- 22. JOptionPane錯誤Java
- 23. Java中的JOptionPane
- 24. 現代IDE是否立即編譯源代碼並繼續?
- 25. 在下面的代碼(wcf服務器)中回撥繼續
- 26. 在r Markdown中結束文檔並繼續輸入代碼
- 27. react-router爲什麼代碼在轉換後繼續執行?
- 28. 代碼似乎繼續運行後返回語句(在C)
- 29. '繼續'如何在這個Python代碼中工作?
- 30. 如何創建代碼,以繼續在vb.net計數定時器
請問你更精確嗎?你的實際目標是什麼?你想知道JOptionPane背後的代碼,還是想要用Yes_No_Option來實現一個窗格,並且不知道如何完成這個任務? – DiabolicWords
@DiabolicWords對不起,我不太確定怎麼說,我想知道JOptionPane – Eishknaar
背後的代碼好吧。那麼,我想,你唯一的機會就是找到一個好的反編譯器,並在超類的方法中看看代碼。對不起,這可能聽起來有點不友好,但據我所知,確實是看到幕後的唯一途徑。 – DiabolicWords