Java 如何在扩展JPanel的类中添加用于加载/保存文件的菜单栏?

Java 如何在扩展JPanel的类中添加用于加载/保存文件的菜单栏?,java,swing,user-interface,menu,jpanel,Java,Swing,User Interface,Menu,Jpanel,考虑以下代码: /** * Main class * @author X2 * */ class DrawingPanel extends JPanel implements MouseListener, MouseMotionListener ,KeyListener { /** * private variables */ // dimensions of the window private static final long s

考虑以下代码:

/**
 * Main class
 * @author X2
 *
 */
class DrawingPanel extends JPanel implements MouseListener, MouseMotionListener ,KeyListener
{
    /**
     *    private variables
     */

    // dimensions of the window
    private static final long serialVersionUID = 1L;
    private static final Dimension MIN_DIM = new Dimension(300, 300);
    private static final Dimension PREF_DIM = new Dimension(500, 500);


    /**
     * Setting the dimensions of the window
     */
    public Dimension getMinimumSize() { return MIN_DIM; }

    public Dimension getPreferredSize() { return PREF_DIM; }



    /**
     *  The constructor
     */
    DrawingPanel()
    {
        super();
        addMouseListener(this);
        addMouseMotionListener(this);
        addKeyListener(this);
        setFocusable(true);
        requestFocusInWindow();
    }

public void paintComponent(Graphics g)
{
// code 
}

public void mouseClicked(MouseEvent evt) 
{ // code 

}

// more code 
如何将面板添加到我的窗口中,在那里我需要打开和保存文件的选项

此时窗口看起来是这样的:

感谢您,您可以将a或a添加到封闭的
JFrame
,如图所示。

您可以将a或a添加到封闭的
JFrame
,如图所示。

添加,而不是添加到
JPanel(添加JMenuBar,BorderLayout.NORTH)
(可能,没有问题,可能不是问题)

添加,而不是添加到
JPanel(添加JMenuBar,BorderLayout.NORTH)
(是可能的,没有问题,可能不是程序)

这取决于具体情况

您可以使用
BorderLayout
,将
JMenuBar
放置在
NORTH
位置

接下来的问题是如何布局任何子组件?您需要一种内容窗格,这将允许在
中心位置为容器设置不同的布局管理器

或者,您可以使用在父组件层次结构中查找
JFrame
的第一个实例,或者如果您介意转换结果的话

已更新

我突然想到,如果您打算使用
getAncestorOfClass
,您最好找一个
JRootPane
的实例,它有一个
setJMenuBar
JRootPane
负责布局菜单栏和内容窗格(以及其他一些东西)

这取决于

您可以使用
BorderLayout
,将
JMenuBar
放置在
NORTH
位置

接下来的问题是如何布局任何子组件?您需要一种内容窗格,这将允许在
中心位置为容器设置不同的布局管理器

或者,您可以使用在父组件层次结构中查找
JFrame
的第一个实例,或者如果您介意转换结果的话

已更新

我刚刚想到,如果您打算使用
getAncestorOfClass
,您最好找一个
JRootPane
的实例,它有一个
setJMenuBar
JRootPane
负责布局菜单栏和内容窗格(以及其他一些东西)