2013-05-03 6 views
3

У меня есть кнопка, на которую я хочу, чтобы JFileChooser всплывал. Я попытался этоJFileChooser на кнопке Нажмите

JButton browse= new JButton("Browse"); 
add(browse); 
browse.addActionListener(new ClassBrowse()); 

public class ClassBrowse implements ActionListener { 
    public void actionPerformed(ActionEvent e) { 
    int returnVal = fileChooser.showOpenDialog(this); 
     if (returnVal == JFileChooser.APPROVE_OPTION) { 
      File file = fileChooser.getSelectedFile(); 
      try { 
       // return the file path 
      } catch (Exception ex) { 
       System.out.println("problem accessing file"+file.getAbsolutePath()); 
      } 
     } 
     else { 
      System.out.println("File access cancelled by user."); 
     }  
    } 
} 

Bhe выше дает ошибку The method showOpenDialog(Component) in the type JFileChooser is not applicable for the arguments (ClassName.ClassBrowse)

Кроме того, я хочу, чтобы вернуть полный путь к файлу. Как мне это сделать?

+0

Заменить '' int returnVal = fileChooser.showOpenDialog (this); '' с '' int returnVal = fileChooser.showOpenDialog (frame); '', предполагая, что у вас где-то установлен JFrame, и что это только часть ваш код. – santafebound

ответ

1
  1. ActionListener не Component, вы не можете передать this в файловом броузере.
  2. Вы можете посмотреть File#getCanonicalPath, чтобы получить полный путь к файлу, но вы не можете return его, так как actionPerformed возвращает void (или нет типа возврата). Можно, однако, установить какой-либо другой переменной, вызовите другой метод или даже установить текст JLabel или JTextField ... например ...
0

Вы можете установить переменную экземпляра, которая содержит имя файла строку в actionPerformed, такие как

private String fileName; 
....... 
your code 
....... 
public void actionPerformed(ActionEvent e) { 
int returnVal = fileChooser.showOpenDialog((Component)e.getSource()); 
    if (returnVal == JFileChooser.APPROVE_OPTION) { 
     File file = fileChooser.getSelectedFile(); 
     try { 
      fileName = file.toString(); 
     } catch (Exception ex) { 
      System.out.println("problem accessing file"+file.getAbsolutePath()); 
     } 
    } 
    else { 
     System.out.println("File access cancelled by user."); 
    }  
} 
+0

Как только у вас есть «Файл», не возвращайте его в «String», это бессмысленно. –

+0

Пользователь указал, что ему нужен полный путь – prasanth

+0

. Это легко получить из объекта «Файл». Поэтому сохраните файл. Кроме того, иногда ОП не требует самой логичной вещи, если они спрашивают, как стрелять в ногу, не могли бы вы дать указания? –

1

Вы можете передать контейнер (это может быть JFrame, JDialog, JApplet или любой) ваш JButton лежит в к

fileChooser.showOpenDialog()

и filechooser откроется как модальный диалог поверх этого контейнера.

Смежные вопросы