我在一个类中继承了JFrame,它的布局方式为BorderLayout,在框架上添加了菜单栏,添加了JLabel组件,位置放在NORTH,最后添加了Canvas组件,位置放在CENTER,运行的时候发现菜单选项被覆盖住了,怎么解决呀?
谢谢了!

解决方案 »

  1.   

    你菜单栏是怎么加上去的?是通过setJMenuBar吗?
      

  2.   

    Canvas是重量级组件,如果菜单时是JMenubar肯定会被挡住
    将JPopupMenu.setDefaultLightWeightPopupEnabled(false);加在程序开头
      

  3.   

    菜单栏是通过setJMenuBar加上去的!楼上的大哥,我用Canvas组件是为了能够获得一个可以绘制的空白区域,还能用什么方法获得呀?我没有用JPopupMenu,只用了JMenuItem,帮我看看代码吧!谢谢了!
    import java.awt.*;
    import javax.swing.*;public class Game
    {
        JFrame frame = new JFrame();
        JMenuBar jMenuBar = new JMenuBar();
        JMenu jMenuGame = new JMenu();
        JMenuItem jMenuGameStart = new JMenuItem();
        JMenuItem jMenuGameStop = new JMenuItem();
        JMenuItem jMenuGameExit = new JMenuItem();
        Canvas paintCanvas = new Canvas();
        JLabel labelScore = new JLabel();
        public static final int frameSizeWidth = 400;
        public static final int frameSizeHeight = 300;
        public Game()
        {        
            frame.setTitle("GreedSnake");
            frame.setSize(new Dimension(frameSizeWidth, frameSizeHeight));                
            Container ct = frame.getContentPane();        
            jMenuGame.setText("Game");
            jMenuGameStart.setText("Start");
            jMenuGameStop.setText("Stop");
            jMenuGameExit.setText("Exit");
            jMenuBar.add(jMenuGame);
            jMenuGame.add(jMenuGameStart);        jMenuGame.add(jMenuGameStop);
            jMenuGame.add(jMenuGameExit);
            frame.setJMenuBar(jMenuBar);
            labelScore.setText("Score:");
            ct.add(labelScore,java.awt.BorderLayout.NORTH);
            paintCanvas.setSize(frameSizeWidth,frameSizeHeight);
            ct.add(paintCanvas,java.awt.BorderLayout.CENTER);
            frame.pack();
            frame.setResizable(true);
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            frame.setVisible(true);        
        }public static void main(String[] args)
        {
            Game gs = new Game();
        }}
      

  4.   

    好像要添加一个JPanel,将JPanel添加到JFrame里,将菜单添加到JPanel里面
    这样好像显得层次比较分明,试试吧,研究一下,不一定可行,呵呵!