File-Chooser Problem (2 X Mausklick öffnen)

smartin123

Mitglied
Hallo Zusammen,

ich hab leider ein Problem mit meinem FileChooser, wo ich trotz google- und forensuche nicht die Lösung gefunden habe. Es scheint kein bekanntest Problem zu sein, hab wahrscheinlich irgendwo einen doofen Fehler.

Hier der Quellcode:
Code:
 package chooser; 

import javax.swing.JFileChooser; 
import javax.swing.JPanel; 
import javax.swing.JFrame; 
import javax.swing.JButton; 
import javax.swing.filechooser.FileFilter; 
import java.awt.Rectangle; 
import java.io.File; 

public class FileChooserExample extends JFrame { 

   private static final long serialVersionUID = 1L; 
   private JPanel jContentPane = null; 
   private JButton jButtonOeffne = null; 
   private JFileChooser fileChooser = null; 

   /** 
    * This is the default constructor 
    */ 
   public FileChooserExample() { 
      super(); 
      initialize(); 
   } 

   /** 
    * This method initializes this 
    * 
    * @return void 
    */ 
   private void initialize() { 
      this.setSize(300, 200); 
      this.setContentPane(getJContentPane()); 
      this.setTitle("JFrame"); 
   } 

   /** 
    * This method initializes jContentPane 
    * 
    * @return javax.swing.JPanel 
    */ 
   private JPanel getJContentPane() { 
      if (jContentPane == null) { 
         jContentPane = new JPanel(); 
         jContentPane.setLayout(null); 
         jContentPane.add(getJButtonOeffne(), null); 
      } 
      return jContentPane; 
   } 

   /** 
    * This method initializes jButtonOeffne    
    *     
    * @return javax.swing.JButton    
    */ 
   private JButton getJButtonOeffne() { 
      if (jButtonOeffne == null) { 
         jButtonOeffne = new JButton(); 
         jButtonOeffne.setBounds(new Rectangle(80, 47, 139, 73)); 
         jButtonOeffne.addActionListener(new java.awt.event.ActionListener() { 
            public void actionPerformed(java.awt.event.ActionEvent e) { 
               oeffneFileChooser(); 
               ausfuehrenFileChooser(); 
            } 
         }); 
      } 
      return jButtonOeffne; 
   } 

   protected void ausfuehrenFileChooser() { 
      int state = fileChooser.showOpenDialog(null); 

      if (state == JFileChooser.APPROVE_OPTION) { 
          
         String pfad = fileChooser.getSelectedFile().getAbsolutePath(); 
         System.out.println(pfad); 
          

          
      } else { 
         System.out.println("Auswahl abgebrochen"); 

      } 
       
   } 

   private void oeffneFileChooser() { 
      fileChooser = new JFileChooser(System.getProperty("user.dir")); 
      fileChooser.showDialog(FileChooserExample.this, null); 
      fileChooser.setAcceptAllFileFilterUsed(false); 
      fileChooser.setFileFilter(new FileFilter() { 
         public boolean accept(File f) { 
            return f.isDirectory() 
                  || f.getName().toLowerCase().endsWith(".txt"); 
         } 

         public String getDescription() { 
            return "Texte"; 
         } 
      }); 
   } 
   public static void main(String[] args) { 
      FileChooserExample fce = new FileChooserExample(); 
      fce.setVisible(true); 
       
   } 

}

Wär klasse, wenn mir jemand weiterhelfen könnte.

Vielen Dank und Grüße
smartin123
 
Moin,

sorry, meine Glaskugel ist leider zur Reparatur .......

Was genau funktioniert denn nicht?
An welcher Stelle in den Sourcen?
Bekommst Du eine Fehlermeldung? Wenn ja, welche?

Ohne Infos wird Dir hier niemand helfen (können)! :rolleyes:

Gruß
Klaus
 
Hi Klaus,

sorry, war noch net so ganz fit, hab ich total vergessen :)

Wenn ich den Java-Quellcode ausführe und den Button anklicke,
dann öffnet sich der File-Chooser, das passt noch.

Dann wähle ich eine txt-Datei aus, und klicke auf den öffnen-button.
Leider ist es erforderlich, 2 mal auf den öffnen-button zu klicken,
damit der pfad in die console ausgegeben wird.

(Ebenso bei dem Abbrechen button, wird erst nach dem 2ten anklicken
der file-chooser geschlossen)

Warum ich das über diesen Weg mache, ist, dass ich anfangs probleme hatte,
mit den 2 Buttons. Sprich, wenn der Abbrechen button geklickt wird, dann
wurde, eine exception geschmissen, deshalb hab ich versucht, dass über
den status abzufangen. Ich gebe mir den Status des file-chooser in der methode ausfuehrenFileChooser zurück und in Abhängigkeit dessen, werden weitere Methoden ausgeführt:

Code:
if (state == JFileChooser.APPROVE_OPTION) { 
          
         String pfad = fileChooser.getSelectedFile().getAbsolutePath(); 
         System.out.println(pfad); 
          

          
      } else { 
         System.out.println("Auswahl abgebrochen"); 

      }

Also ich versuche eine Lösung zu finden, damit öffnen und abbrechen button
des file-chooser nur 1 mal betätigt werden muss.

dankeschön
 
Zuletzt bearbeitet:
Dann ruf nicht zweimal den ShowDialog auf
Java:
   private void oeffneFileChooser() { 
      fileChooser = new JFileChooser(System.getProperty("user.dir")); 
      fileChooser.showDialog(FileChooserExample.this, null);    < ----- WARUM ?
      fileChooser.setAcceptAllFileFilterUsed(false); 
      fileChooser.setFileFilter(new FileFilter() { 
         public boolean accept(File f) { 
            return f.isDirectory() 
                  || f.getName().toLowerCase().endsWith(".txt"); 
         } 

         public String getDescription() { 
            return "Texte"; 
         } 
      }); 
   } 

   protected void ausfuehrenFileChooser() { 
      int state = fileChooser.showOpenDialog(null); <--- WARUM ?

      if (state == JFileChooser.APPROVE_OPTION) { 
          
         String pfad = fileChooser.getSelectedFile().getAbsolutePath(); 
         System.out.println(pfad); 
          

          
      } else { 
         System.out.println("Auswahl abgebrochen"); 

      } 
       
   }


mach den showDialog aufruf aus der ausführmethode raus
mfg
 
Zurück