JFileChooser showOpenDialog方法不能与ActionListener一起使用

时间:2017-03-31 10:37:18

标签: java eclipse windowbuilder

我一直在尝试从这个网站上学习这些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);
        }
    });

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

如果您想查看整个代码,我会将其放入您的请求中。

1 个答案:

答案 0 :(得分:1)

错误的含义:方法name a b foo 4 1 bar 3 7 bar 1 2 需要showOpenDialog类型的参数,但使用Component进行调用。更确切地说,给定参数是实现ActionListener而不是ActionListener的匿名类:

Component

在我使用new ActionListener() { ... } 的地方声明的方法中,关键字. . .指向该匿名类的实例。

请参阅showOpenDialog()的文档,它需要父母或this

  

弹出一个"打开文件"文件选择器对话框。注意那个文字   出现在批准按钮中由L& F确定。

     

参数:

null

showDialog()的相关文档:

  

父参数确定两件事:打开的框架   对话框取决于具有外观和位置的组件   在放置对话框时考虑。   ...   如果父级为null,则对话框取决于没有可见窗口,并且   它被放置在依赖于外观的位置,例如中心   屏幕。

通常传递的参数是在视觉上包含对话框的parent - the parent component of the dialog, can be null; see showDialog for details JFrame,但它可以是JPanel

null