单击按钮上的JFileChooser

时间:2013-05-03 04:59:51

标签: java swing jbutton 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)

另外,我希望它返回完整的文件路径。我该怎么做?

3 个答案:

答案 0 :(得分:1)

  1. ActionListener不是Component,您无法将this传递给文件选择器。
  2. 您可以查看File#getCanonicalPath以获取文件的完整路径,但不能return,因为actionPerformed只返回void(或不返回类型)。但是,你可以设置一些其他变量,调用另一种方法,甚至设置JLabelJTextField的文本......例如......

答案 1 :(得分: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.");
    }       
}   

答案 2 :(得分:0)

您可以将JButton所在的容器(可能是JFrame,JDialog,JApplet或任何内容)传递给

  

fileChooser.showOpenDialog()

并且filechooser将作为该容器顶部的模式对话框打开。