Mon application est intégrée à une application autonome tierce qui ouvrira les boîtes de dialogue JOptionPane dans un thread séparé et j'exécuterai le thread pour fermer toutes les boîtes de dialogue ouvertes. Donc avant la fermeture, j'ai besoin de message écrit sur la boîte de dialogue.Comment obtenir par programme le contenu du message JOptionPane
Mon exemple de programme principal avec lequel je suis en train de réaliser:
public static void main(String[] args)throws Exception{
ScheduledThreadPoolExecutor executor = new ScheduledThreadPoolExecutor(1);
executor.scheduleAtFixedRate(() -> {
Window[] possibleWindow = Window.getWindows();
if (possibleWindow != null && possibleWindow.length > 0) {
System.out.println("Found " + possibleWindow.length + "Window(s) " + possibleWindow[0].getClass().getSuperclass());
for (int i = possibleWindow.length - 1; i >= 0; i--) {
try {
Window window = possibleWindow[i];
//here where I need to get the dialog box message before closing it.
window.dispose();
} catch (Exception e) {
e.printStackTrace();
}
}
}
}, 1, 1, TimeUnit.SECONDS);
JOptionPane.showMessageDialog(null, "test !!!!");
}
êtes-vous certain que toutes les références dans le tableau possibleWindow seront des instances de JOptionPane? Si oui, cela aurait-il plus de sens dans votre application d'étendre (par extension directe ou encapsulation) JOptionPane pour créer une nouvelle classe qui enregistrerait le contenu du volet lors de sa création? De cette façon, vous n'essaieriez pas de nettoyer à la fin. – Teto
Je viens de vérifier, JOptionPane n'est pas une sous-classe de Windows. Donc, je ne vois pas comment cela peut apparaître dans le tableau de fenêtre possible. Mais si vous pouvez obtenir une référence à un JOptionPane existant par une autre méthode, alors vous pouvez simplement appeler JOptionPane.getMessage() pour obtenir l'objet du message. – Teto
Mon application est intégrée à une application autonome de balançoire tierce et je ne crée pas d'objets JOptionPane pour afficher des boîtes de dialogue de message. –