Im Grunde habe ich ein Spiel, das den JOptionPane aufruft, wenn etwas passiert, ich möchte in der Lage sein, zum Spiel zurückzukehren, wenn der Benutzer ja klickt. So etwas wie eine Unpause-FunktionYES_NO_OPTION JOptionPane Java-Code auf 'Ja' setzen
Antwort
HINWEIS: Als ich diese Antwort postete, war die Frage ganz anders - lies die Kommentare.
Da OpenJDK Open-Source (GNU General Public License Version 2) ist, können Sie seinen Quellcode einsehen. Normalerweise gucke ich Java-Quellcode auf grepcode.com. Wenn Sie OracleJDK installieren und die Option zum Installieren von Quellen auswählen, können Sie auch den Großteil des Quellcodes im JDK-Installationsverzeichnis (src.zip) finden. Seien Sie vorsichtig, dass die Lizenz dafür nicht erlaubt, dass Sie diesen Code (es ist normalerweise derselbe) für sich selbst verwenden (aber es ist sicherlich viel besser als ein Decompiler).
Diese Links zu den spezifischen Methoden funktionieren nicht in meinem Lieblingsbrowser (Vivaldi, basierend auf Chrome). Wenn Sie nicht selbst nach den spezifischen Methoden suchen möchten, empfehle ich Ihnen, Firefox zu verwenden.
Hier sind die relevanten Ausschnitte aus grepcode.com:
JOptionPane (constructor) - das von jedem show...Dialog
Methode aufgerufen wird:
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 }
Hier sehen wir, dass die JOptionPane
fordert eine OptionPaneUI
von deran. OptionPaneUI
ist eine abstrakte Klasse (die mehr wie eine Schnittstelle aussieht), so dass Sie dort keinen Code finden können. Die einzigen Unterklassen sind BasicOptionPaneUI
oder MultiOptionPaneUI
. Unter Verwendung des Debuggers fand ich, dass es BasicOptionPaneUI
für einen showConfirmDialog
ist. Danach wird das Ergebnis in die setUI
-Methode übernommen, die von JComponent
übernommen wurde. Anders als einige grundlegende Feldprüfung, nennt es die ui.installUI Methode:
137 public void installUI(JComponent c) {
138 optionPane = (JOptionPane)c;
139 installDefaults();
140 optionPane.setLayout(createLayoutManager());
141 installComponents();
142 installListeners();
143 installKeyboardActions();
144 }
die bei installComponents Schauen wir weiter:
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 Sound recht vielversprechend:
613 protected Container createButtonArea() {
614 JPanel bottom = new JPanel();
...
630 addButtonComponents(bottom, getButtons(), getInitialValueIndex());
631 return bottom;
632 }
Diese Methode ruft nun addButtonComponents . Diese Methode ist zu lang, um hier zu kopieren, aber kurz gesagt, erhält sie die länderspezifischen Strings für die Schaltflächen und fügt sie als JButton s hinzu. Es gibt dann jedem von ihnen eine ButtonActionListener.
Das ist toll zu wissen, beantwortet aber nicht wirklich meine Frage, wie ich zum Spiel zurückkehren soll? – Eishknaar
@Eishknaar Nun, Sie haben Ihre Frage so weit bearbeitet, dass Sie nur noch 1 Wort behalten (ausgenommen Artikel und Pronomen). Ich glaube, dass diese Antwort für Ihre ursprüngliche Frage gültig ist, während ich zustimme, dass sie nichts mit Ihrer Bearbeitung zu tun hat. – Nulano
@Eishknaar In Bezug auf diese neue Frage, müssen Sie nur die Dokumentation lesen. JOptionPane ist standardmäßig ein modaler Dialog. Dies bedeutet, dass ein Aufruf zum Anzeigen des JOptionPane so lange blockiert, bis das JOptionPane geschlossen wird. An diesem Punkt kehrt die show-Methode zurück und Ihr Code wird fortgesetzt. Dies wird durch den Eingangstyp von JOptionPane in keiner Weise beeinflusst. http://docs.oracle.com/javase/tutorial/uiswing/components/dialog.html#create – Nulano
- 1. Customize JOptionPane
- 2. JSpinner in JOptionPane?
- 3. JOptionPane Eintragsnummern
- 4. JOptionPane anpassen Eingabe
- 5. Java JOptionPane benutzerdefinierte zeichnen auf Hintergrund
- 6. JOptionPane showMessageDialog Verwendung
- 7. JOptionPane erscheint nicht
- 8. JOptionPane close frame on Keine Taste
- 9. JOptionPane Fehler Java
- 10. Wiederholtes JOptionPane-Popup?
- 11. Java Ratespiel (speziell JOptionPane)
- 12. Java-SQL einfügen JOptionpane
- 13. JOptionPane Information Nachricht
- 14. JOptionPane - Eingabedialog Programm
- 15. JOptionPane Eingabe zu int
- 16. JFrame und JOptionPane
- 17. JOptionPane showInputDialog mit benutzerdefinierten Schaltflächen
- 18. Tomcat 8.5.x: Migrieren Ventil javacode von Tomcat 7
- 19. Android: erstellen Checkbox über javacode in Klasse Fragment
- 20. JOptionPane Benutzerdefinierte Schaltflächen zum Zurückgeben von String
- 21. immer JA?
- 22. JSpinner nimmt gesamte Breite in JOptionPane bis
- 23. Ausblenden von Daten mit JOptionPane
- 24. JAVA: Für Loops und JOptionPane
- 25. Wie ein JOptionPane geöffnet bleibt
- 26. Converting Console Code in JOptionPane
- 27. Wie JOptionPane mit drei Textfelder
- 28. Verwendung von Gurken mit JOptionPane
- 29. JOptionPane liest die Zeichenfolge nicht
- 30. Wie setze ich XML-Namespace-Wert in Javacode Android
Könnten Sie bitte genauer sein? Was ist dein eigentliches Ziel? Möchten Sie den Code hinter dem JOptionPane kennen oder möchten Sie einen Bereich mit der Yes_No_Option implementieren und wissen nicht, wie man das macht? – DiabolicWords
@DiabolicWords Tut mir leid, ich war mir nicht sicher, wie ich es formulieren sollte, ich würde gerne den Code hinter dem JOptionPane wissen. – Eishknaar
Okay. Dann, denke ich, ist Ihre einzige Chance, einen guten Decompiler zu finden und den Code in der Superklassenmethode anzuschauen. Tut mir leid, das hört sich vielleicht etwas unfreundlich an, aber es ist tatsächlich, soweit ich weiß, die einzige Möglichkeit, hinter die Kulissen zu schauen. – DiabolicWords