写了两个Frame,一个是BaseFrame,其中设置了菜单栏和工具栏,其他的Frame都继承这个Frame,程序如下:
BaseFrame.java
package toolbar;import javax.swing.*;
import java.awt.*;public class BaseFrame extends JFrame
{
 JMenuBar  menuB = new JMenuBar();
 JMenu fileMenu = new JMenu("文件");
 JMenuItem openItem = new JMenuItem("打开");
 JMenuItem saveItem = new JMenuItem("保存");
 
 JToolBar toolBar = new JToolBar("工具栏");
 
 
 public BaseFrame()
 {
 setTitle("BaseFrame");
 setSize(new Dimension(400,400));
 setLocation(0,0);
 getContentPane().setLayout(new BorderLayout());
 getContentPane().add(new JButton("测试"),"South");
 
 
 setJMenuBar(menuB);
 menuB.add(fileMenu);
 fileMenu.add(openItem);
 fileMenu.add(saveItem);
 
 JButton openButton = new JButton("打开",new ImageIcon("1.gif"));
 JButton saveButton = new JButton("保存",new ImageIcon("2.gif"));
 toolBar.add(openButton);
 toolBar.add(saveButton);
 getContentPane().add(toolBar,"North");
 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
 
AppFrame.java
package toolbar;import javax.swing.*;
import java.awt.*;public class AppFrame extends BaseFrame{
  public AppFrame()
  {
  setTitle("AppFrame 继承BaseFrame");
  setLocation(300,300);
//如果重新布局,菜单条和BaseFrame中的“测试“按钮都不会显示
  getContentPane().setLayout(new BorderLayout());
  getContentPane().add(new JButton("hello"),"Center");
  }
  
  public static void main(String[] args)
  {
  AppFrame f = new AppFrame();
  f.show();
  }
  
  }是不是因为如果在AppFrame中重新布局的话,setLayout(new BorderLayout());会删除掉BaseFrame中原有的布局,所以工具栏等都不会显示,而菜单条因为不涉及布局,所以可以正常显示?谢谢各位大侠