2013-05-26 3 views
0

Я создал простую программу, в которой вы выбираете файл и, надеюсь, вернули строку пути к файлу, я не совсем уверен, что я делаю неправильно здесь.Возвращающаяся строка из actionPerformed и actionListener Java

public static String createWindow() { 

    JFrame.setDefaultLookAndFeelDecorated(true); 
    JDialog.setDefaultLookAndFeelDecorated(true); 
    JFrame frame = new JFrame("JComboBox Test"); 
    frame.setLayout(new FlowLayout()); 
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    JButton inbutton = new JButton("Select Input File"); 

    inbutton.addActionListener(new ActionListener() { 

     String imagePath; 

     public void actionPerformed(ActionEvent ae) { 
      JFileChooser fileChooser = new JFileChooser(); 
      int returnValue = fileChooser.showOpenDialog(null); 
      if (returnValue == JFileChooser.APPROVE_OPTION) { 
      File selectedFile = fileChooser.getSelectedFile(); 
      imagePath = selectedFile.getPath(); 
      } 
     } 
    }); 

    frame.add(inbutton); 
    frame.pack(); 
    frame.setVisible(true); 
    return imagePath; 
} 
+1

Какая ошибка? Объясните, пожалуйста, что вы ожидали, что вы на самом деле получаете? – Maroun

+0

Ошибка в том, что imagePath не может быть разрешен переменной, я хочу, чтобы он содержал путь к файлу – user1750156

+0

Это должно быть частью исходного вопроса. –

ответ

2

Вы пытаетесь вернуть значение сразу, когда вызывается метод, но результат не будет доступен, пока не произойдет какое-то событие. Ваша логика отключена. Что вам нужно сделать, так это отобразить кнопку в модальном диалоговом окне, а не в JFrame. Модильность диалога эффективно приостанавливает поток программы из точки, где отображается диалог, пока диалог больше не будет виден.

+0

Как это сделать? Я довольно новичок в java, любые предлагаемые учебники? – user1750156

+1

@ user1750156 Сделайте это полем класса. И в следующий раз расскажите нам обо всех ошибках в своем вопросе! Ознакомьтесь с учебниками Java Swing. –

+0

@ user1750156 Отметьте [Как сделать диалоги] (http://docs.oracle.com/javase/tutorial/uiswing/components/dialog.html) – MadProgrammer

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