开发者社区> 问答> 正文

在JPanel顶部绘制的JMenuBar

我正在制作一个简单的绘图应用程序。我有一个扩展JFrame的类和一个扩展JMenuBar的类。我设置了一个扩展JPanel的类,作为JFrame的内容窗格,并绘制了它的paintComponent方法。问题是,当我从Window的redisplay方法调用DrawPane的repaint方法时,我的JMenuBar也被绘制在JPanel内部,如下所示:

它不像原始版本那样具有交互性,我可以在上面画图,这意味着它位于内容窗格中。

据我所读,JMenuBar与JFrame的contentPane不重叠。为什么会这样呢?

这是我的代码:

public class Window extends JFrame {

    private DrawPane drawPane;
    private EventHandler eventHandler;
    private FrameMenu frameMenu;

    public Window(String title, int w, int h)
    {
        super(title);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        eventHandler = new EventHandler();
        frameMenu = new FrameMenu();
        setJMenuBar(frameMenu);     
        drawPane = new DrawPane();
        drawPane.setPreferredSize(new Dimension(w,h));      
        drawPane.addMouseListener(eventHandler);
        addKeyListener(eventHandler);
        setContentPane(drawPane);
        pack();
        setVisible(true);
    }

    public void redisplay()
    {
        drawPane.repaint();
    }
}

我有一个静态的点ArraList,可以在DrawPane的paintComponent方法中进行绘制。

public class DrawPane extends JPanel {

    @Override
    public void paintComponent(Graphics g)
    {
        g.setColor(Color.red);

        int c=0;
        Point prev = new Point(0,0);
        for(Point p:Source.vertices)
        {
            g.fillRect(p.x-2, p.y-2, 4, 4);

            if(c++ > 0)
            {
                g.drawLine(p.x, p.y, prev.x, prev.y);
            }

            prev = p;
        }

    }
}

和JMenuBar:

public class FrameMenu extends JMenuBar implements ActionListener {

    JMenuItem newItem = new JMenuItem("New Line Connection");
    JMenuItem newBezItem = new JMenuItem("New Bezier Curve");
    JMenu fileMenu = new JMenu("File");

    JMenuItem sizeItem = new JMenuItem("Canvas Size");
    JMenu windowMenu = new JMenu("File");

    public FrameMenu()
    {
        //setting up hierarchy and action listeners..
    }

    public void actionPerformed(ActionEvent event) {
        //menu interactions...
    }

}

展开
收起
几许相思几点泪 2019-12-23 17:48:58 638 0
0 条回答
写回答
取消 提交回答
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载