java - 显示在另一个类/文件中创建的菜单栏
问题描述
我有两个文件/类,主类和菜单栏类。
这是我的主要课程:
public static void main(String[] args){
journalFrame = new JFrame("Journal Viewer");
journalFrame.setJMenuBar(menuBar = new JMenuBar());
journalFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
journalFrame.setPreferredSize(new Dimension(500, 800));
journalFrame.pack();
journalFrame.setLocationRelativeTo(null);
journalFrame.setVisible(true);
}
这是我的菜单栏类:
MenuBar(){
mMbar = new JMenuBar();
fileMenu = new JMenu("File");
aboutMenu = new JMenu("About");
openItem = new JMenuItem("Open");
openItem.addActionListener((ActionListener) this);
fileMenu.add(openItem);
exitItem = new JMenuItem("Exit");
exitItem.addActionListener((ActionListener) this);
fileMenu.add(exitItem);
mMbar.add(fileMenu);
}
我的输出只是一个没有菜单栏的普通窗口。我如何让它出现?
解决方案
您不是在创建类的对象,而是在JMenuBar
调用menuBar = new JMenuBar()
. 此外,如果这是您的完整代码,它会有多个问题,老实说,我不会费心去弄清楚为什么我在点和分号上遇到编译器错误。请注意,setJMenuBar(JMenuBar menuBar)
只能使用 JMenuBar 对象作为参数调用。因此,要么Override
用那种方法让它按照你想要的方式运行,要么尝试其他方法。
我将加入@AndrewThompson 的观点,他认为在 GUI 类中创建菜单栏会更有意义。
这是您的代码可能(或可能应该)的样子:
public class Main
{
private static JFrame journalFrame;
private static JMenuBar menuBar;
public static void main(String[] args)
{
journalFrame = new JFrame("Journal Viewer");
menuBar = new JMenuBar();
JMenu fileMenu = new JMenu("File");
JMenu aboutMenu = new JMenu("About");
JMenuItem openItem = new JMenuItem("Open");
openItem.addActionListener(new ActionListener()
{
@Override
public void actionPerformed(ActionEvent e)
{
// TODO: Your open action
}
});
fileMenu.add(openItem);
JMenuItem exitItem = new JMenuItem("Exit");
exitItem.addActionListener(new ActionListener()
{
@Override
public void actionPerformed(ActionEvent e)
{
// TODO: Your exit action
}
});
fileMenu.add(exitItem);
menuBar.add(fileMenu);
menuBar.add(aboutMenu);
journalFrame.setJMenuBar(menuBar);
journalFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
journalFrame.setPreferredSize(new Dimension(500, 800));
journalFrame.pack();
journalFrame.setLocationRelativeTo(null);
journalFrame.setVisible(true);
}
}