我正在学习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);
带下划线的是“添加”,因此我无法编译代码。
我一直在寻找解决此问题的方法,据我所知这应该可行。
任何帮助表示赞赏。
谢谢
乔希
请注意,您的menuBar()方法是空类型,因此没有返回任何值,而您使用的content(JPanel)的add()方法需要两个参数,它们是(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时使用继承的概念(将menubar类扩展到JMenuBar,以便您的类可以像JMenuBar一样工作),而不是依赖于组合的概念。您还可以按照上述文章来设置JMenuBar:
frame.setJMenuBar(menu.menuBar());
如果您是Java编程的新手,则需要开始练习Java编码标准,尤其是对类和方法的正确命名。类名称的首字母应大写,而方法名称应至少包含一个动词。:)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句