Работа с JFileChooser - получение доступа к выбранному файлу - PullRequest
1 голос
/ 06 декабря 2011

давно не кодировался, так что думаю, что я немного ржавый. Я пытаюсь создать приложение, которое позволяет пользователю выбрать файл в качестве входных данных. Следующий фрагмент кода - это то, что у меня есть на данный момент:

JButton btnFile = new JButton("Select Excel File");
btnFile.addActionListener(new ActionListener() {
    //Handle open button action.
    public void actionPerformed(ActionEvent e) {
        final JFileChooser fc = new JFileChooser(); 
        int returnVal = fc.showOpenDialog(frmRenamePdfs);
        if (returnVal == JFileChooser.APPROVE_OPTION) {
            File file = fc.getSelectedFile();
            //This is where a real application would open the file.
            System.out.println("File: " + file.getName() + ".");    
        } else {
            System.out.println("Open command cancelled by user.");
        }
        System.out.println(returnVal);
    }
});

Кажется, я не могу понять, как получить доступ к «файлу» извне Слушателя, то есть в функции, где создаются остатки GUI. У меня есть пустая текстовая метка рядом с кнопкой, которая запускает средство выбора файлов, поэтому я хочу сохранить файл, а также установить текст текстовой метки на имя файла.

1 Ответ

4 голосов
/ 06 декабря 2011

Как насчет определения вашей File file переменной на уровне класса, а не внутри внутреннего класса anon?

public class SwingSandbox {

  private File file;

  public SwingSandbox() {
    final JFrame frame = new JFrame("Hello");

    JButton btnFile = new JButton("Select Excel File");
    btnFile.addActionListener(new ActionListener() {
        //Handle open button action.
        public void actionPerformed(ActionEvent e) {
            final JFileChooser fc = new JFileChooser(); 
            int returnVal = fc.showOpenDialog(frame);
            if (returnVal == JFileChooser.APPROVE_OPTION) {
                file = fc.getSelectedFile();
                //This is where a real application would open the file.
                System.out.println("File: " + file.getName() + ".");    
            } else {
                System.out.println("Open command cancelled by user.");
            }
            System.out.println(returnVal);
        }
    });

    frame.getContentPane().add(btnFile);
    frame.setSize(100, 100);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setVisible(true);
  }


  public static void main(String[] args) throws Exception {
    new SwingSandbox();
  }

}
...