JFileChooser showOpenDialog 方法不适用于 ActionListener

JFileChooser showOpenDialog method not working with ActionListener

我一直在努力学习本网站的这些 Java 教程

http://www.homeandlearn.co.uk/java/java.html

但是教程是在 Netbeans 中,而我使用的是 Eclipse。

到现在为止一直没有遇到困难。 http://www.homeandlearn.co.uk/java/opening_files.html

在给定的教程中,显示​​了使用 JFileChooser 通过名为 'Open' 的 JMenuItem 打开文件。但是,当我使用网站上给出的代码时,出现以下错误

JFileChooser 类型中的方法 showOpenDialog(Component) 不适用于参数 (new ActionListener(){})

这是发生错误的代码。

    JMenuItem mntmNewMenuItem = new JMenuItem("Open");
    mntmNewMenuItem.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent arg0) {
        int returnVal = db.showOpenDialog(this);
        }
    });

所以,我的问题是,我应该在上面的代码存根中更改什么才能使用文件选择器?

如果您想查看整个代码,我会根据您的要求放入。

错误的含义:方法 showOpenDialog 需要类型为 Component 的参数,但正在使用 ActionListener 调用。更确切地说,给定的参数是匿名 class 实现 ActionListener 而不是 Component:

new ActionListener()  { ... }

在我使用 . . . 的地方声明的方法中,关键字 this 指向那个匿名 class 的实例。

参见 showOpenDialog() 的文档,它需要父级或 null:

Pops up an "Open File" file chooser dialog. Note that the text that appears in the approve button is determined by the L&F.

Parameters:

parent - the parent component of the dialog, can be null; see showDialog for details

以及showDialog()的相关文档:

The parent argument determines two things: the frame on which the open dialog depends and the component whose position the look and feel should consider when placing the dialog. ... If the parent is null, then the dialog depends on no visible window, and it's placed in a look-and-feel-dependent position such as the center of the screen.

通常传递的参数是 JFrameJPanel 应该 在视觉上包含 对话框,但它可以是 null:

    int returnVal = db.showOpenDialog(null);