Swing JOptionPane.showConfirmMessage() wird nicht angezeigt

hubert.kowalski

Neues Mitglied
Hallo zusammen,
Ich habe in einer Klasse 2 Methoden, in denen jeweils eine JOptionPane() angezeigt werden soll.
Die 1. Methode wird direkt beim Start der Klasse aufgerufen, die 2. über einen JButton.

In der 1. Methode wird JOptionPane angezeigt, beim Aufruf der 2. Methode nicht!
Entferne ich den Aufruf der 1. Methode aus dem Constructor, wird in der 2. Methode der Dialog korrekt angezeigt. (Also ist der Constructor von JOptionPane ok!)
Wo liegt der Fehler??

Danke für die Hilfe im Vorraus!


Code:
Java:
public class MyClass extends JFrame{
      public MyClass(){
              checkTransferFilesOffline();
      }

      // 1. Methode
      private void checkTransferFilesOffline(){
                //Verzeichnis nach Dateien durchsuchen
                File transferFiles = new File("myDir");
                File[] files = transferFiles.listFiles();
                int fileCount = files.length;
                if(fileCount > 0){
                      int choice = JOptionPane.showConfirmDialog(...Parameter....);
                      //Der Dialog wird richtig angezeigt!!!
                      .....
               }
      }

      // 2. Methode über JButton aufgerufen
      private void transferFiles(){
           //wie in Methode 1 werden Dateien gezählt
           ........
           if(fileCount > 0){
                 int choice = JOptionPane.showConfirmDialog(...Parameter....);
                 if(choice == JOptionPane.NO_OPTION){
                      return;
                 }
                 //Wenn nun diese Methode nach der 1. aufgerufen wird, so wird der Dailog nicht
                 //angezeigt!!! int choice enthält sofort JOptionPane.YES_OPTION (-1)!
                 // Wo ist der (Denk)Fehler??
           }
      }
      



}
 
Zuletzt bearbeitet von einem Moderator:
Wenn die OptionPane in der 2ten Methode gar nicht angezeigt wird, dann lässt das wohl eher darauf schließen, dass filecount nicht > 0 ist, oder?
Da ich dort auch nur ein if... sehe und kein if... else... wird die Methode also auch immer dann ausgeführt, wenn choice gar nicht gefüllt ist.
Hast du dir filecount und choice mal ausgeben lassen wenn du die 2te Methode nach der 1sten aufrufst und mal wenn du die 1te Methode nicht zuerst ausführst?
 
Wenn die OptionPane in der 2ten Methode gar nicht angezeigt wird, dann lässt das wohl eher darauf schließen, dass filecount nicht > 0 ist, oder?
Da ich dort auch nur ein if... sehe und kein if... else... wird die Methode also auch immer dann ausgeführt, wenn choice gar nicht gefüllt ist.
Hast du dir filecount und choice mal ausgeben lassen wenn du die 2te Methode nach der 1sten aufrufst und mal wenn du die 1te Methode nicht zuerst ausführst?

Danke für Deine Antwort!
Ich habe heute herausgefunden das es an Swing liegt! Swing ist nicht Threads-save!!
Wenn ich die JOptionPane über SwingUtilities.invokeLater() aufrufe, läuft all
 

Zurück
Oben