Ich habe ein sehr spezifisches Problem, und ich wollte wissen, ob es eine Möglichkeit gibt, den Besitzer eines JDialogs zu ändern (es kann mit dem Konstruktor festgelegt werden). Ich nehme an, es gibt keine "offizielle" Möglichkeit (außer einem Hack), aber ich wollte sicherstellen, dass ich nichts verpasst habe. Irgendwelche Ideen oder Hinweise zu diesem Thema wären hilfreich, danke schon ...Gibt es eine Möglichkeit, den Besitzer eines JDialogs zu ändern?
Antwort
Wenn Ihre Frage ist, wie Dialoge während des Anwendungslebenszyklus wiederverwendet wird, dann ein besserer Weg zu:
- definieren alle Dialoginhalte als JPanel Unterklassen
- und instanziiert ein neues JDialog mit der bestehenden JPanel Unterklasse Instanz
Für Punkt 2, können Sie natürlich faul Auswertung der Platten verwenden (instanziiert auf den ersten nur verwenden, dann wiederverwenden).
Sie müssen auch Ihre Panels eine eigene Schnittstelle implementieren lassen, die es Ihnen ermöglicht, sie für die Wiederverwendung in einem neuen JDialog zu initialisieren (Reinit bedeutet in der Regel Löschen aller Felder Inhalte oder Festlegen dieser Felder zurück zu ihren Standardwerte).
Nur was mir einfällt fällt unter unsicheren Hack (benutze Reflektion und verändere den Besitzer, aber das könnte sich unter verschiedenen Versionen der JVM ändern (sogar von demselben Anbieter auf der gleichen Plattform)).
Vielleicht eine bessere Frage für Sie zu fragen ist "das ist, was ich versuche zu tun ... muss ich wirklich den Besitzer des Dialogs ändern oder gibt es einen besseren Weg"? Ich versuche, von Gründen zu denken, zu wollen, um den Besitzer zu ändern, und ich kann mit jedem nicht kommen ...
j:
ich eine ähnliche Notwendigkeit eines einzigen „global“ Dialog in meiner Anwendung gehabt habe einen „Notiz“ Dialog, wenn der Text in einer Tabellenzelle dienen zu lang ist, angezeigt werden soll. In diesem Fall kann der Benutzer den Mauszeiger bewegen oder mit der rechten Maustaste auf die Zelle klicken und ein Dialogfeld aufrufen, das den gesamten Text anzeigt. Ich wollte jedoch, dass der Dialog schnell angezeigt wird, vor allem, wenn ich den Mauszeiger halte, also wollte ich ihn einfach ein- und ausblenden. Ich entschied mich, diesen Dialog in der Hauptklasse mit dem Anwendungsrahmen als Eigentümer zu erstellen und zu speichern. Wenn dann eine Ansicht, deren Besitzer der Rahmen war, den Notizdialog benötigte, konnte die Ansicht ihn von der Hauptklasse abrufen. In den Fällen, in denen ein Dialogfeld das Dialogfeld Notizen benötigt, kann das übergeordnete Dialogfeld eine neue Instanz des Dialogfelds Notizen mit dem entsprechenden Besitzer erstellen. Da diese übergeordnete Dialoge (zumindest in meiner App) beim Schließen angeordnet sind, würde die zusätzliche Notizen-Dialoginstanz den Gültigkeitsbereich verlassen und den Müll sammeln. Ich hoffe, das hilft.
- 1. Gibt es eine Möglichkeit, den Besitzer-Thread eines Steuerelements zu finden?
- 2. Gibt es eine Möglichkeit, den Inhalt eines Symlinks zu sehen?
- 3. Gibt es eine Möglichkeit, den Typ eines Mountpoints zu bestimmen?
- 4. Gibt es eine Möglichkeit, den Fortschrittswert eines Fensters zu erhalten?
- 5. Gibt es eine Möglichkeit, den Benutzernamen eines SVN-Benutzers über den gesamten Repository-Verlauf zu ändern?
- 6. ändern Besitzer eines laufenden Prozesses
- 7. Gibt es eine Möglichkeit, den Stamm eines bereits registrierten Service-Mitarbeiters zu ändern?
- 8. Visual Studio-Klassen-/Dateivorlagen: Gibt es eine Möglichkeit, den Inhalt automatisch pro Projekt/Lösung zu ändern?
- 9. Gibt es eine Möglichkeit, ein Etikett mit c3js zu ändern?
- 10. Gibt es eine Möglichkeit, den Rückgabetyp Arrays.asList zu zwingen
- 11. Gibt es eine Möglichkeit, die Pixel eines UIImage zu analysieren?
- 12. Gibt es eine Möglichkeit, den HTML5-Bereich zu steuern?
- 13. Gibt es eine Möglichkeit zu verhindern, dass UIImagePickerController Statusleiste ändern?
- 14. Twilio Twimlets - Gibt es eine Möglichkeit, die Stimme zu ändern?
- 15. Gibt es eine Möglichkeit, die Rails secret_key_base elegant zu ändern?
- 16. Gibt es eine Möglichkeit, die Standardstartposition des Emulators zu ändern?
- 17. Gibt es eine Möglichkeit, einen laufenden Countdown zu ändern?
- 18. Gibt es eine Möglichkeit, den `enum` -Typ vorzeichenlos zu machen?
- 19. Gibt es eine Möglichkeit, die Schriftart JOptionPane.showMessageDialog zu ändern?
- 20. c3js: Gibt es eine Möglichkeit, die Schriftgröße zu ändern?
- 21. Gibt es eine Möglichkeit, Standardschriftart für Ihre Anwendung zu ändern
- 22. Gibt es eine Möglichkeit, etwas in mysql gleich zu ändern?
- 23. Gibt es eine Möglichkeit, die Zeit stapelweise zu ändern?
- 24. gibt es eine Möglichkeit, jCheckbox zu ändern, um ein Kreuz anstelle eines Ticks zu verwenden? JAVA
- 25. Gibt es eine Möglichkeit, die Hintergrundfarbe eines Terminals zu bestimmen?
- 26. Gibt es eine Möglichkeit, die Ausführung eines Prozesses zu verzögern?
- 27. Gibt es eine Möglichkeit, alle Attribute eines DOMEelements zu erhalten?
- 28. Gibt es eine Möglichkeit, Selektoren zu gruppieren?
- 29. Gibt es eine Möglichkeit, ConfigurationManager.AppSettings zu überschreiben?
- 30. Gibt es eine Möglichkeit, das Logo in den Standarddialogfeldern zu ändern?
Warum in aller Welt möchten Sie das überhaupt tun? – Bombe