我的JFrame类代码如下:
package start;
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import javax.swing.table.*;
import start.SysMenu;//这个类是下面自己写的
public class MAIN extends JFrame{
private static final int SPLITWIDTH=5;
JPanel jpleft=new JPanel();
JPanel jpright=new JPanel();
JPanel top =new JPanel();
JPanel bottom=new JPanel();
JSplitPane separate1;
JSplitPane separate2;
JTextArea jtextarea=new JTextArea();
JScrollPane jscrollpane=new JScrollPane(jtextarea);
SysMenu sysmenu=new SysMenu();//实例化SysMenu类
public MAIN(){
super("MyJavaQueryAnalyzer");
init();
}
public void init(){
this.setJMenuBar(sysmenu);//设置系统菜单项
setTopLayout();
separate2=new JSplitPane(JSplitPane.VERTICAL_SPLIT,top,bottom);
separate2.setDividerLocation(250);
separate2.setDividerSize(SPLITWIDTH);

separate1=new JSplitPane(JSplitPane.HORIZONTAL_SPLIT,jpleft,
separate2);
separate1.setDividerSize(SPLITWIDTH);
separate1.setDividerLocation(150);

setLayout(new BorderLayout());
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); getContentPane().add(separate1,BorderLayout.CENTER);
setSize(800,600);
this.setVisible(true);
}
public void setTopLayout(){
top.setLayout(new BorderLayout());
top.add(jscrollpane,BorderLayout.CENTER);
}
public static void main(String[] args) {
// TODO Auto-generated method stub
setDefaultLookAndFeelDecorated(true);
new MAIN();
}}
我的SysMenu类代码如下:package start;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class SysMenu extends JMenuBar{
String[] fileitems={
"连接……","断开","新建","打开……","保存","另存为……","打印……","退出"
};
String[] edititems={
"撤消","剪切","复制","黏贴","全选","清除窗口","查找……","重复上一次查找",
"替换……","转到行……",
};
String[] advanceditems={
"将选定的内容设置为大写字母","将选定内容设置为小写字母","增加缩进","减少缩进"
};
char[] fileShortcuts={
'T','D','N','O','S','A','P','X'
};
char[] editShortcuts={
'U','T','C','P','S','L','F','R','E','G','A'
};
JMenu filemenu=new JMenu("文件");
JMenu editmenu=new JMenu("编辑");
JMenu advanced=new JMenu("高级");
public SysMenu(){
init();
}
public void init(){
for(int i=0;i<fileitems.length;i++){
JMenuItem item=new JMenuItem(fileitems[i],fileShortcuts[i]);
filemenu.add(item);
if(fileitems[i].equals("断开")||fileitems[i].equals("另存为……")
||fileitems[i].equals("打印……")){
filemenu.addSeparator();
}
item.setAccelerator(KeyStroke.getKeyStroke(fileShortcuts[i],
Toolkit.getDefaultToolkit().getMenuShortcutKeyMask(), false));
}
for(int i=0;i<edititems.length;i++){
JMenuItem item=new JMenuItem(edititems[i],editShortcuts[i]);
editmenu.add(item);
if(edititems[i].equals("撤消")||edititems[i].equals("清除窗口")
||edititems[i].equals("替换……")||edititems[i].equals("转到行……")){
editmenu.addSeparator();
}
item.setAccelerator(KeyStroke.getKeyStroke(editShortcuts[i],
Toolkit.getDefaultToolkit().getMenuShortcutKeyMask(), false));
}
}
}
还请高人指点一下,谢过了先!!!!!希望高手能运行一下我的代码!

解决方案 »

  1.   

    晕,搞了半天,原来你在sysmenu中没有this.add(filemenu);.......
    不然怎么显示
      

  2.   

    JMenuBar是添加到JFrame了,但是JMenu没有添加到bar中,怎么会显示呢?
    楼上正解,这段代码怪怪的,布局好像也不太对
      

  3.   

    楼主只要的是菜单显示,其它效果再研究吧,
    public SysMenu(){
    add(filemenu);
    add(editmenu);
    add(advanced);
    init();
    }
      

  4.   

    改过了
    package test;import java.awt.*;
    import javax.swing.*;
    import java.awt.event.*;
    import javax.swing.table.*;public class MainClass extends JFrame {
    private static final int SPLITWIDTH = 5; JPanel jpleft = new JPanel(); JPanel jpright = new JPanel(); JPanel top = new JPanel(); JPanel bottom = new JPanel(); JSplitPane separate1; JSplitPane separate2; JTextArea jtextarea = new JTextArea(); JScrollPane jscrollpane = new JScrollPane(jtextarea); SysMenu sysmenu = new SysMenu();// ???SysMenu? public MainClass() {
    super("MyJavaQueryAnalyzer");
    init();
    } public void init() {
    this.setJMenuBar(sysmenu);// ???????
    setTopLayout();
    separate2 = new JSplitPane(JSplitPane.VERTICAL_SPLIT, top, bottom);
    separate2.setDividerLocation(250);
    separate2.setDividerSize(SPLITWIDTH); separate1 = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, jpleft, separate2);
    separate1.setDividerSize(SPLITWIDTH);
    separate1.setDividerLocation(150); setLayout(new BorderLayout());
    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); getContentPane().add(separate1, BorderLayout.CENTER);
    setSize(800, 600);
    this.setVisible(true);
    } public void setTopLayout() {
    top.setLayout(new BorderLayout());
    top.add(jscrollpane, BorderLayout.CENTER);
    } public static void main(String[] args) {
    // TODO Auto-generated method stub
    setDefaultLookAndFeelDecorated(true);
    new MainClass();
    }}=========================================================
    package test;import javax.swing.*;
    import java.awt.*;
    import java.awt.event.*;/**
     * 
     * @author 
     *
     */
    public class SysMenu extends JMenuBar {
    /** File menuitems */
    String[] fileitems = { "??……", "??", "??", "??……", "??", "???……", "??……", "??" }; /** Edit menuitems */
    String[] edititems = { "??", "??", "??", "??", "??", "????", "??……", "???????", "??……", "???……", }; /** Advanced menuItems */
    String[] advanceditems = { "?????????????", "????????????", "????", "????" }; char[] fileShortcuts = { 'T', 'D', 'N', 'O', 'S', 'A', 'P', 'X' }; char[] editShortcuts = { 'U', 'T', 'C', 'P', 'S', 'L', 'F', 'R', 'E', 'G', 'A' }; /** Menus */
    JMenu filemenu = new JMenu("??");
    JMenu editmenu = new JMenu("??");
    JMenu advanced = new JMenu("??"); /**
     * Constructor
     *
     */
    public SysMenu() {
    init();
    } public void init() {
    // Add menus
    this.add(filemenu);
    this.add(editmenu);
    this.add(advanced);

    // File menu
    for (int i = 0; i < fileitems.length; i++) {
    JMenuItem item = new JMenuItem(fileitems[i], fileShortcuts[i]);
    filemenu.add(item);
    if (fileitems[i].equals("??") || fileitems[i].equals("???……") || fileitems[i].equals("??……")) {
    filemenu.addSeparator();
    }
    item.setAccelerator(KeyStroke.getKeyStroke(fileShortcuts[i], Toolkit.getDefaultToolkit().getMenuShortcutKeyMask(), false));
    }

    // Edit menu
    for (int i = 0; i < edititems.length; i++) {
    JMenuItem item = new JMenuItem(edititems[i], editShortcuts[i]);
    editmenu.add(item);
    if (edititems[i].equals("??") || edititems[i].equals("????") || edititems[i].equals("??……") || edititems[i].equals("???……")) {
    editmenu.addSeparator();
    }
    item.setAccelerator(KeyStroke.getKeyStroke(editShortcuts[i], Toolkit.getDefaultToolkit().getMenuShortcutKeyMask(), false));
    }
    }
    }
      

  5.   

    漏了几行代码 public void init() {
    // Add menus
    this.add(filemenu);
    this.add(editmenu);
    this.add(advanced);
           ....
      

  6.   

    楼主好象把,小程序applet和swing混合用了.
    如果要想在IE上显示的话,有图片会显示不出来.
    建议不要混合使用重量级组件和轻量级的组件
    看上去是有点怪怪的
    提个建议