java中的文件选择器

java中的文件选择器,java,swing,jbutton,actionlistener,jfilechooser,Java,Swing,Jbutton,Actionlistener,Jfilechooser,我试图在代码中使用文件选择器,但在int returnVal=fc.showOpenDialog(FileChooserDemo.this);“中出现错误“非封闭类”。下面是我的代码。有没有猜到答案 browse_button.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { int returnVal = fc.showOpenDialog(FileChoo

我试图在代码中使用文件选择器,但在
int returnVal=fc.showOpenDialog(FileChooserDemo.this);“
中出现错误
“非封闭类”
。下面是我的代码。有没有猜到答案

browse_button.addActionListener(new ActionListener() {
  public void actionPerformed(ActionEvent e) {

     int returnVal = fc.showOpenDialog(FileChooserDemo.this);

      File file = fc.getSelectedFile();

                log.append("Opening: " + file.getAbsolutePath() + "." + "\n");
                String ab=file.getAbsolutePath();
                System.out.println(ab);

}});

我在main方法中创建了
actionlistener

您的问题是,您在一个静态方法中调用
main(…)
,并试图使用
FileChooserDemo。这个
(对封闭类的引用)在这个静态方法中。这是行不通的,因为在静态世界中没有
this
。解决方案是在非静态代码(如非静态方法或类的构造函数)中执行此操作。

是的,我在添加了browse_按钮的地方创建了一个Jframe。其思想是,当单击browse_按钮时,应该出现文件选择器。我认为在创建操作侦听器之前,需要在代码中声明“fc”为final,或声明为class@Mad:不,
final
在这里不起作用。如果这是问题所在,错误消息将明确说明这一点(正如我们都经历过的)。fc在代码中已经是最终的:/@hovercraftfullofees-yes-yes,抓住一根稻草:有什么方法可以在main方法中使用它吗?我的其余代码也在main方法中。当我在构造函数中使用它时,它给出了相同的错误:/Ok,我得到了我想要的。我只编辑了“int returnVal=fc.showOpenDialog(null);”@装满鳗鱼的气垫船你说得对。但我想现在使用“null”对mr是有效的。谢谢大家的帮助…@user841852:我建议你们不要在main方法或任何其他静态方法中这样做。main方法应该非常小,只需设置主要对象并启动它们,就是这样。