java диалог выбора директории файлы папки ))

смотрите основное рассуждение здесь
предлагаю решить проблему , "повесив" на кнопку =

import javax.swing.*; // импортируем весь свинг, дабы не заморачиваться(мы ведь только учимся))
............
.......
...
JButton redButton = new JButton("Выбрать папку :))");
        ActionListener actionListener = new TestActionListener(); // прирепляем обработчик

вот такой вот обработчик (отдельный класс) =

import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JFileChooser ;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
/*конечной задачей этого обработчика является запись
 * значения пути к папке, указанной пользователем 
 * в статическое поле MyData.path + запуск функции которая 
 * как раз и выполнит поставленную задачу
 * обработатывать  - и вообще работать с файлами будет класс DoIt - 
 * так что , вообще говоря можно было бы сразу передать 
 * полученный из диалога путь к папке через локальную переменную  - 
 * но мы использовали глобальное хранилище  - MyData - 
 *а именно его статическое поле path*/
public class TestActionListener implements ActionListener { // обработчик событий.
	    public void actionPerformed(ActionEvent e) {
	    	
	    	 
		          //Код, который нужно выполнить при нажатии
	
	    	    
	    	    JFileChooser chooser = new JFileChooser();
	    	    chooser.setCurrentDirectory(new java.io.File("."));
	    	    chooser.setDialogTitle("choosertitle");
	    	    chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
	    	    chooser.setAcceptAllFileFilterUsed(false);

	    	    if (chooser.showOpenDialog(null) == JFileChooser.APPROVE_OPTION) {
	    	      System.out.println("getCurrentDirectory(): " + chooser.getCurrentDirectory());
	    	      MyData.path = ""+chooser.getCurrentDirectory(); // отлавливаем "путь в нашу глобальную переменную
	    	      System.out.println("getSelectedFile() : " + chooser.getSelectedFile()); // аналогично можно поймать и файл
                 // MyData.path = ""+chooser.getSelectedFile(); // при желании -отловим файл	    	    
	    	    } else {
	    	      System.out.println("No Selection ");
	    	    }
	    	    
	          
	    	     if (MyData.path!="")
	              {
	            	  //Код, который нужно выполнить при нажатии
	  		    	String message = "путь получен)))="+MyData.path ;
	  		    	    JOptionPane.showMessageDialog(new JFrame(), message, "Dialog",
	  		    	        JOptionPane.ERROR_MESSAGE);
	  		    	  DoIt Handler = new DoIt(MyData.path); // ВЫЗЫВАЕМ ЛОГИКУ ПРОГРАММЫ
	  		    	 // ПЕРЕДАВ ПУТЬ К ПАПКЕ, в которой следует осуществить форматирование файлов
	              }
	              else
	              {
	            	  //Код, который нужно выполнить при нажатии
	    		    	String message = "УКАЖИТЕ ПАПКУ !!!";
	    		    	    JOptionPane.showMessageDialog(new JFrame(), message, "Dialog",
	    		    	        JOptionPane.ERROR_MESSAGE); 
	              }
	    	    
	    	    //MyData.path = new String(data);
		     }
	    
	  
		}

для хранения данных я , как безграмотный человек , использую класс со статическими полями (из него и можно как раз забрать "путь") =

public class MyData { // это класс будет хранить данные для нашей программы
	 public static String path=""; // путь к директории из которой требуется взять файлы 

}