@Override
 public Component getTableCellEditorComponent(
     JTable table, Object value, boolean isSelected, int row, int column) {
   file = value.toString();
   SwingUtilities.invokeLater(
       () -> {
         fileChooser.setSelectedFile(new File(file));
         if (fileChooser.showOpenDialog(button) == JFileChooser.APPROVE_OPTION) {
           file = fileChooser.getSelectedFile().getAbsolutePath();
         }
         fireEditingStopped();
       });
   button.setText(file);
   return button;
 }
    /** Constructor. */
    public FileChooserCellEditor() {
      super(new JTextField());
      setClickCountToStart(CLICK_COUNT_TO_START);

      // Using a JButton as the editor component
      button = new JButton();
      button.setBackground(Color.white);
      button.setFont(button.getFont().deriveFont(Font.PLAIN));
      button.setBorder(null);

      // Dialog which will do the actual editing
      fileChooser = new JFileChooser();
      fileChooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
    }