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
负责布局菜单栏和内容窗格(以及其他一些东西)