0

我刚刚开始学习 Java,并且一直在阅读文档。我不喜欢复制一堆代码并粘贴它。因此,我一直在尝试一次完成一件事。

我已经有了一个可以工作的 JFrame,并决定从添加一个菜单开始。

这是我的代码:

package mainframe;

import javax.swing.*;

public class menuBar extends JMenuBar {
    JMenuBar mainMenu = JMenuBar("Menu");
}

我的错误:

error: cannot find symbol
  JMenuBar mainMenu = JMenuBar("Menu");
  symbol:   method JMenuBar(String)
  location: class menuBar
1 error

所以无论如何。我不太确定“找不到符号错误”是什么意思。也许我搜索错误。但是每次我用谷歌搜索时,我都会遇到更复杂的问题而没有明确的答案。任何关于我做错了什么以及找不到符号错误意味着什么的建议将不胜感激。提前致谢。

4

3 回答 3

1

针对您在此处的特定代码,我建议您不要扩展JMenuBar该类。您可能已经在许多JFrame扩展类的教程或示例中看到它,尽管这被认为是不好的做法。要将 a 添加JMenuBar到您的窗口中,我建议您执行以下操作:

public class MyProgram {
    JFrame frame;
    public MyProgram() {
        ...
        frame = new JFrame();
        JMenuBar mainMenu = new JMenuBar();
        JMenu fileMenu = new JMenu("File");
        fileMenu.add(new JMenuItem("Open..."));
        mainMenu.add(fileMenu); // adds a single JMenu to the menubar
        frame.setJMenuBar(mainMenu); // adds the entire menubar to the window
        ...
        frame.setVisible();
        ...
    }

扩展JMenuBar该类的唯一原因是,如果您想创建一个在子类中定义的方法方面具有附加功能的类,但这似乎不太可能,特别是考虑到您只是在学习 Swing。

于 2013-05-28T22:48:40.410 回答
1

for 的构造函数JMenuBar从不接受任何参数。还要记住new在实例化(创建实例)新对象时使用关键字。考虑使用以下代码:

JMenuBar mainMenu = new JMenuBar();
JMenu fileMenu = new JMenu("File");
mainMenu.add(fileMenu);
于 2013-05-28T22:29:51.110 回答
0
JMenuBar mainMenu = JMenuBar("Menu");

应该

JMenuBar mainMenu = new JMenuBar("Menu");

你忘记了new关键字。new使用构造函数创建新对象时必须始终使用。否则,Java 会认为它是一种方法,而事实并非如此。

此外,如果您查看此处的文档。你会发现JMenuBar' 的构造函数不带任何参数。因此,不要传递任何东西:

JMenuBar mainMenu = new JMenuBar();
于 2013-05-28T22:26:59.770 回答