我刚刚开始学习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
所以无论如何。我不太清楚“找不到符号错误”是什么意思。也许我找错了。但每次我在谷歌上搜索时,都会遇到更复杂的问题,没有明确的答案。任何关于我做错了什么,或者什么是找不到符号错误的建议,我们都会非常感激。提前谢谢。
发布于 2013-05-28 22:48:40
针对这里的特定代码,我建议您不要扩展JMenuBar
类。您可能在许多扩展JFrame
类的教程或示例中看到过这种情况,尽管这被认为是不良做法。要向窗口添加一个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-28 22:29:51
JMenuBar
的构造函数从不使用任何参数。还记得在实例化(创建一个新对象的实例)时使用new
关键字。考虑使用以下代码:
JMenuBar mainMenu = new JMenuBar();
JMenu fileMenu = new JMenu("File");
mainMenu.add(fileMenu);
发布于 2013-05-28 22:26:59
JMenuBar mainMenu = JMenuBar("Menu");
应该是
JMenuBar mainMenu = new JMenuBar("Menu");
您忘记了new
关键字。在创建带有构造函数的新对象时,必须始终使用new
。否则,Java会认为它是一种方法,而实际上并非如此。
此外,如果您查看这里的文件。您会发现JMenuBar
的构造函数不带任何参数。因此,不要传递任何内容:
JMenuBar mainMenu = new JMenuBar();
https://stackoverflow.com/questions/16802506
复制相似问题