【问题标题】:JFileChooser showOpenDialog method not working with ActionListenerJFileChooser showOpenDialog 方法不适用于 ActionListener
【发布时间】:2017-03-31 19:54:29
【问题描述】:

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

那么,我的问题是,我应该在上面的代码存根中进行哪些更改才能使用文件选择器?

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

【问题讨论】:

    标签: java eclipse windowbuilder


    【解决方案1】:

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

    new ActionListener()  { ... }
    

    在我使用. . . 声明的方法中,关键字this 指向该匿名类的实例。

    查看showOpenDialog()的文档,它需要父母或null

    弹出“打开文件”文件选择器对话框。请注意,文本 出现在批准按钮中是由L&F决定的。

    参数:

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

    以及showDialog()的相关文档:

    父参数决定了两件事:打开的框架 对话框取决于外观和感觉应该位于其位置的组件 放置对话框时考虑。 ... 如果父级为空,则对话框不依赖于可见窗口,并且 它被放置在依赖外观的位置,例如 屏幕。

    通常传递的参数是JFrameJPanel,应该直观地包含对话框,但也可以是null

        int returnVal = db.showOpenDialog(null);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-08-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-28
      相关资源
      最近更新 更多