我正在学习java,我正在尝试从另一个类向我的框架添加一个菜单栏(练习将代码划分为多个类以更好地组织程序)。
这是我的代码示例:
public class MainApp {
public static void main(String[] args) {
// Create window
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
frame.setSize(600, 400);
// Create main panel
JPanel content = new JPanel();
content.setLayout(new BorderLayout());
frame.add(content);
//Create menu bar
menubar menu = new menubar();
content.add(menu.menuBar(), BorderLayout.NORTH);
//Other stuff...
} // Ends main method
} // Ends MainApp class
和菜单栏类:
public class menubar {
public static void menuBar(){
JMenuBar menu = new JMenuBar();
JMenu file = new JMenu("File");
JMenuItem clear = new JMenuItem("New");
JMenuItem exit = new JMenuItem("Exit");
JMenu help = new JMenu("Help");
JMenuItem about = new JMenuItem("About");
JMenuItem instructions = new JMenuItem("Instructions");
} // Ends method menuBar
} // Ends class menubar
我使用 eclipse,并在行中:
content.add(menu.menuBar(), BorderLayout.NORTH);
“add”带有下划线,因此我无法编译代码。
我一直在寻找解决此问题的方法,据我所知这应该可行。
任何帮助表示赞赏。
谢谢
Josh
请注意,您的菜单栏()方法是一个void类型因此没有返回值,而add()您使用的内容方法(JPanel)需要两个参数(JComponent 类型[注意JMenuBar是JComponent的子类], int [用于布局目的])
content.add(menu.menuBar(), BorderLayout.NORTH);
下面是您的代码的快速修复:
public class menubar {
public static JMenuBar menuBar(){
JMenuBar menu = new JMenuBar();
JMenu file = new JMenu("File");
JMenuItem clear = new JMenuItem("New");
JMenuItem exit = new JMenuItem("Exit");
JMenu help = new JMenu("Help");
JMenuItem about = new JMenuItem("About");
JMenuItem instructions = new JMenuItem("Instructions");
return menu;
} // Ends method menuBar
} // Ends class menubar
我给你的建议是在处理 Java 中的 GUI 时使用继承的概念(将菜单栏类扩展为 JMenuBar,以便你的类可以像 JMenuBar 一样),而不是依赖于组合的概念。您还可以按照上面关于设置 JMenuBar 的帖子:
frame.setJMenuBar(menu.menuBar());
如果您是 Java 编程新手,您需要开始练习 Java 编码标准,尤其是类和方法的正确命名。类名称的第一个字母应该大写,而方法的名称应该至少有一个动词。 :)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)