从actionPerformed和actionListener Java返回String

时间:2013-05-26 21:16:19

标签: java swing jframe actionlistener jfilechooser

我已经创建了一个简单的程序,您可以在其中选择一个文件,并希望返回文件路径的字符串,我不太确定我在这里做错了什么。

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 个答案:

答案 0 :(得分:2)

您在调用方法时会立即尝试返回值,但在某些事件发生之前,结果将无法使用。你的逻辑是关闭的。你应该做的是在模式对话框而不是JFrame中显示按钮。对话框的模态将有效地暂停从显示对话框的点开始的程序流,直到对话框不再可见。