写了两个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中原有的布局,所以工具栏等都不会显示,而菜单条因为不涉及布局,所以可以正常显示?谢谢各位大侠
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中原有的布局,所以工具栏等都不会显示,而菜单条因为不涉及布局,所以可以正常显示?谢谢各位大侠
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货