请教一个关于界面的问题 我在一个类中继承了JFrame,它的布局方式为BorderLayout,在框架上添加了菜单栏,添加了JLabel组件,位置放在NORTH,最后添加了Canvas组件,位置放在CENTER,运行的时候发现菜单选项被覆盖住了,怎么解决呀?谢谢了! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 你菜单栏是怎么加上去的?是通过setJMenuBar吗? Canvas是重量级组件,如果菜单时是JMenubar肯定会被挡住将JPopupMenu.setDefaultLightWeightPopupEnabled(false);加在程序开头 菜单栏是通过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(); }} 好像要添加一个JPanel,将JPanel添加到JFrame里,将菜单添加到JPanel里面这样好像显得层次比较分明,试试吧,研究一下,不一定可行,呵呵! java double值的问题 Java代码构建是否有辅助工具 急,如何log4j将INFO信息输出到AWT界面中的一个TEXTARWA中 工资2000 试用期1400 刚做了一个月 但实际收到的才1120元 郁闷种 关于protect的问题 请达人指教:如何用鼠标事件读出来的坐标取得JLabel上相应点上的元素 关于dao和entitybean的问题 请问如何在IE里面启用java applet? RMI程序问题 jdbc close 求救如何在通过java向已经存在的excel中写入数据? 大家帮忙看一下这个程序哪里出错了,谢谢了!!!
将JPopupMenu.setDefaultLightWeightPopupEnabled(false);加在程序开头
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();
}}
这样好像显得层次比较分明,试试吧,研究一下,不一定可行,呵呵!