如何添加主文件之外的swing组件



我的问题的例子:

有一个主文件:

public class APP extends JFrame
{
    private Dimension screen = Toolkit.getDefaultToolkit().getScreenSize();
    public APP()
    {
        setLayout(new BorderLayout());
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setJMenuBar(new MenuBar());
        JPanel content = new JPanel(new GridLayout(0, 8, 2, 2));
        add(new JScrollPane(content, 22, 32), BorderLayout.CENTER);      
        pack();
        setLocationByPlatform(true);
        setResizable(false);
        setVisible(true);
    }
    public Dimension getPreferredSize()
    {
        return new Dimension(screen.width / 10 * 7, screen.height / 10 * 6);
    }
    public static void main(String[] args)
    {
        SwingUtilities.invokeLater(new Runnable()
        {
            public void run()
            {
                APP program = new APP();
            }
        });
    } 
}

我想添加一个外部对象作为JMenuBar

public class MenuBar extends JMenuBar
{
    public MenuBar()
    {
        JMenu file = new JMenu("File");
        file.setMnemonic(KeyEvent.VK_F);
        add(file);
        JMenuItem item;
        item = new JMenuItem("Add New");
        item.setMnemonic(KeyEvent.VK_N);
        item.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N,
                ActionEvent.ALT_MASK));
        item.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent arg0) {
                //createThumb();
            }
        });
        file.add(item);
    }
}

但是,我的菜单栏根本没有显示。当我在主文件中创建JMenuBar函数时,例如…createMenuBar()里面有相同的代码,它显示当我把它添加到框架,但当我把它作为一个外部对象,它没有。

我做错了什么?

EDIT:修复错误。参考上面的代码

您意外地将构造函数定义为方法。将签名更改为public MenuBar()(不返回值),它应该可以工作。

public class MenuBar extends JMenuBar
{
    public MenuBar()
    {
        // constructor code
    }  
}

最新更新