super("记事本");
     JMenuBar mBar=new JMenuBar();
     JMenu [] mA={new JMenu("文件"),new JMenu("编辑"),new JMenu("格式"),new JMenu("查看"),new JMenu("帮助")};
     char[] [] mC={{'F','E','O','V','H'},
           {'N','O','S','X'},
           {'U','T','C','P','L','A'},
           {'F'},
           {'S'},
           {'H','A'} };
    
     JMenuItem[][] mI={{new JMenuItem("新建(N)"),new JMenuItem("打开(O)"),new JMenuItem("保存(S)"),new JMenuItem("退出(X)")},
               {new JMenuItem("剪切(T)"),new JMenuItem("复制(C)"),new JMenuItem("粘贴(P)"),new JMenuItem("全选(A)"),new JMenuItem("删除(L)")},
               {new JMenuItem("字体(F)")},
               {new JMenuItem("状态栏(S)")},
               {new JMenuItem("帮助(F)"),new JMenuItem("关于记事本(A)")}};
     setJMenuBar(mBar);
     int i,j;
     for(i=0;i<mA.length;i++)
     {
     mBar.add(mA[i]);
     mA[i].setMnemonic(mC[0][i]);
     for(j=0;j<mI[i].length-1;j++);
     {
     mA[i].add(mI[i][j]);
     mI[i][j].setMnemonic(mC[i+1][j]);
     }
     }
这是我的一段代码,将整个程序运行后,每个菜单下面怎么只有一个子菜单,请教大神,这是怎么回事?Java记事本代码调试

解决方案 »

  1.   

    附上全部代码import java.awt.BorderLayout;
    import java.awt.Container;
    import java.awt.FlowLayout;
    import java.awt.Font;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.awt.event.ItemEvent;
    import java.awt.event.ItemListener;
    import java.io.*;import javax.swing.JButton;
    import javax.swing.JComboBox;
    import javax.swing.JDialog;
    import javax.swing.JFileChooser;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JMenu;
    import javax.swing.JMenuBar;
    import javax.swing.JMenuItem;
    import javax.swing.JPanel;
    import javax.swing.JScrollPane;
    import javax.swing.JTextArea;
    import javax.swing.filechooser.FileNameExtensionFilter;
    @SuppressWarnings("serial")
    public class Jishiben extends JFrame { static JTextArea textarea;
    static JFrame frame;
    static JLabel label_1;
    static JLabel label_2;

    class xinjian implements ActionListener
    {
    public void actionPerformed(ActionEvent e)
    {
    textarea.setText("");
    }
    }
    class dakai implements ActionListener
    {
    public void actionPerformed(ActionEvent e){
    JFileChooser jf=new JFileChooser();
    FileNameExtensionFilter filter=new FileNameExtensionFilter("*.txt","txt");
    jf.addChoosableFileFilter(filter);
    jf.showOpenDialog(Jishiben.this);
    String fileName=jf.getSelectedFile().getAbsolutePath().trim();
    try{
    BufferedReader br=new BufferedReader(new FileReader(fileName));
    String S;
    for(S=br.readLine();S!=null;S=br.readLine())
    textarea.append(S+"\n");
    br.close();
    }catch(IOException a){
    System.out.println("Open file error");
    a.printStackTrace();
    }
    }
    }
        class baocun implements ActionListener
        { @Override
    public void actionPerformed(ActionEvent e) {
    // TODO Auto-generated method stub
    JFileChooser jf=new JFileChooser();
    FileNameExtensionFilter filter=new FileNameExtensionFilter("*.txt","txt");
    jf.addChoosableFileFilter(filter);
    jf.showOpenDialog(Jishiben.this);
    String fileName=jf.getSelectedFile().getAbsolutePath().trim();
    if(fileName!=null)
    try{
    BufferedWriter bw=new BufferedWriter(new FileWriter(fileName+".txt"));
    PrintWriter pr=new PrintWriter(bw);
    pr.println(textarea.getText());
    bw.close();
    }catch(IOException a){
    System.out.println("Save file error");
    a.printStackTrace();
    }
    }
        
        }
        class tuichu implements ActionListener
        { @Override
    public void actionPerformed(ActionEvent e) {
    // TODO Auto-generated method stub
    System.exit(0);
    }
        
        }
        class jianqie implements ActionListener
        { @Override
    public void actionPerformed(ActionEvent e) {
    // TODO Auto-generated method stub
    textarea.cut();
    }
        
        }
        class fuzhi implements ActionListener
        { @Override
    public void actionPerformed(ActionEvent e) {
    // TODO Auto-generated method stub
    textarea.copy();
    }
        
        }
        class zhantie implements ActionListener
        { @Override
    public void actionPerformed(ActionEvent e) {
    // TODO Auto-generated method stub
    textarea.paste();
    }
        
        }
        class quanxuan implements ActionListener
        { @Override
    public void actionPerformed(ActionEvent e) {
    // TODO Auto-generated method stub
    textarea.selectAll();
    }
        
        }
        class shanchu implements ActionListener
        { @Override
    public void actionPerformed(ActionEvent e) {
    // TODO Auto-generated method stub
    textarea.replaceRange("",textarea.getSelectionStart(),textarea.getSelectionEnd());
    }
        
        }
        class ziti implements ActionListener
        {
           JComboBox cb_1;
           JComboBox cb_2;
           JComboBox cb_3;
           Font[] fa={new Font("宋体",Font.BOLD,16),new Font("楷体",Font.ITALIC,16),new Font("Arial",Font.PLAIN,16)};
           Font[] fb={new Font("宋体",Font.BOLD,16),new Font("宋体",Font.ITALIC,16),new Font("Arial",Font.PLAIN,16)};
           Font[] fc={new Font("宋体",Font.PLAIN,16),new Font("宋体",Font.PLAIN,25),new Font("Arial",Font.PLAIN,10)};
           class xuanziti implements ItemListener
           {
    @Override
    public void itemStateChanged(ItemEvent e) {
    // TODO Auto-generated method stub
    if(cb_1.getSelectedIndex()==1)
    textarea.setFont(fa[1]);
    else if(cb_1.getSelectedIndex()==2)
    textarea.setFont(fa[2]);
    else
    textarea.setFont(fa[0]);
    }
            
           }
           class xuanzixing implements ItemListener
           { @Override
    public void itemStateChanged(ItemEvent e) {
    // TODO Auto-generated method stub
    if(cb_2.getSelectedIndex()==1)
    textarea.setFont(fb[1]);
    else if(cb_2.getSelectedIndex()==2)
    textarea.setFont(fa[2]);
    else
    textarea.setFont(fa[0]);
    }
            
           }
           class xuandaxiao implements ItemListener
           {
         @Override
    public void itemStateChanged(ItemEvent e) {
    // TODO Auto-generated method stub
    if(cb_3.getSelectedIndex()==1)
    textarea.setFont(fc[1]);
    else if(cb_3.getSelectedIndex()==2)
    textarea.setFont(fc[2]);
    else
    textarea.setFont(fc[0]);
    }
            
           }
           public void actionPerformed(ActionEvent e) {
    // TODO Auto-generated method stub
    JDialog jd=new JDialog(frame,"设置字体",false);
    java.awt.Container c=jd.getContentPane();
    String [] ziti={"宋体","楷体","Arial"};
    String [] zixing={"粗体","斜体","正常"};
    String [] daxiao={"大","中","小"};
    cb_1=new JComboBox(ziti);
    cb_2=new JComboBox(zixing);
    cb_3=new JComboBox(daxiao);
    c.setLayout(new FlowLayout());
    c.add(cb_1);
    cb_1.addItemListener(new xuanziti());
    c.add(cb_2);
    cb_2.addItemListener(new xuanzixing());
    c.add(cb_3);
    cb_3.addItemListener(new xuandaxiao());
    jd.setSize(300,100);
    jd.setVisible(true);

    }
        
        }
        class zhuangtailan implements ActionListener
        { @Override
    public void actionPerformed(ActionEvent e) {
    // TODO Auto-generated method stub
    label_2.setText("走总共:Ln"+textarea.getLineCount());
    }
        
        }
        class bangzhu implements ActionListener
        { @Override
    public void actionPerformed(ActionEvent e) {
    // TODO Auto-generated method stub
    JDialog jd=new JDialog(frame,"帮助主题",false);
    Container c=jd.getContentPane();
    c.add(new JLabel("使用方法基本与Windows记事本相同,正在努力完善中......"));
    jd.setSize(400,200);
    jd.setVisible(true);

    }
        
        }
        class guanyujishiben implements ActionListener
        {
    JLabel j1=new JLabel("版权所有,违法必究");
    int i=0;
    class xiayitiao implements ActionListener
    { @Override
    public void actionPerformed(ActionEvent e) {
    // TODO Auto-generated method stub
    String [] S={"此程序完全模仿Windows自带的笔记本程序,仅供初学者学习"};
    if(i<S.length)
    i++;
    j1.setText(S[i]);
    }

    }
                class shangyitiao implements ActionListener
                { @Override
    public void actionPerformed(ActionEvent e) {
    // TODO Auto-generated method stub
    String [] S={"此程序完全模仿Windows自带的笔记本程序,仅供初学者学习"};
    if(i>0)
    i--;
    j1.setText(S[i]);
    }
                
                }
    @Override
    public void actionPerformed(ActionEvent e) {
    // TODO Auto-generated method stub
    JDialog jd=new JDialog(frame,"欢迎使用",false);
    Container c=jd.getContentPane();
    JPanel jp=new JPanel();
    JButton jbs=new JButton("下一条");
    JButton jbx=new JButton("上一条");
    jbs.addActionListener(new xiayitiao());
    jbx.addActionListener(new shangyitiao());
    jp.add(jbs);
    jp.add(jbx);
    c.setLayout(new BorderLayout());
    c.add(j1,BorderLayout.CENTER);
    c.add(jp,BorderLayout.SOUTH);
    jd.setSize(400,200);
    jd.setVisible(true);
    }
        }
        public Jishiben()
        {
         super("记事本");
         JMenuBar mBar=new JMenuBar();
         JMenu [] mA={new JMenu("文件"),new JMenu("编辑"),new JMenu("格式"),new JMenu("查看"),new JMenu("帮助")};
         char[] [] mC={{'F','E','O','V','H'},
               {'N','O','S','X'},
               {'U','T','C','P','L','A'},
               {'F'},
               {'S'},
               {'H','A'} };
        
         JMenuItem[][] mI={{new JMenuItem("新建(N)"),new JMenuItem("打开(O)"),new JMenuItem("保存(S)"),new JMenuItem("退出(X)")},
                   {new JMenuItem("剪切(T)"),new JMenuItem("复制(C)"),new JMenuItem("粘贴(P)"),new JMenuItem("全选(A)"),new JMenuItem("删除(L)")},
                   {new JMenuItem("字体(F)")},
                   {new JMenuItem("状态栏(S)")},
                   {new JMenuItem("帮助(F)"),new JMenuItem("关于记事本(A)")}};
         setJMenuBar(mBar);
         int i,j;
         for(i=0;i<mA.length;i++)
         {
         mBar.add(mA[i]);
         mA[i].setMnemonic(mC[0][i]);
         for(j=0;j<mI[i].length-1;j++);
         {
         mA[i].add(mI[i][j]);
         mI[i][j].setMnemonic(mC[i+1][j]);
         }
         }
         mI[0][0].addActionListener(new xinjian());
         mI[0][1].addActionListener(new dakai());
         mI[0][2].addActionListener(new baocun());
         mI[0][3].addActionListener(new tuichu());
         mI[1][0].addActionListener(new jianqie());
         mI[1][1].addActionListener(new fuzhi());
         mI[1][2].addActionListener(new zhantie());
         mI[1][3].addActionListener(new quanxuan());
         mI[1][4].addActionListener(new shanchu());
         mI[2][0].addActionListener(new ziti());
         mI[3][0].addActionListener(new zhuangtailan());
         mI[4][0].addActionListener(new bangzhu());
         mI[4][1].addActionListener(new guanyujishiben());
    }
        public static void main(String args[])
        {
         frame=new Jishiben();
         frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
         frame.setSize(800,600);
         Container c=frame.getContentPane();
         c.setLayout(new BorderLayout());
         textarea=new JTextArea();
         JScrollPane sta=new JScrollPane(textarea);
         label_2=new JLabel("总共:Ln 0",JLabel.RIGHT);
         label_2.setSize(800,200);
         c.add(sta,BorderLayout.CENTER);
         c.add(label_2,BorderLayout.SOUTH);
         frame.setVisible(true);
        }
    }
      

  2.   


    package com.hr.base;import java.awt.BorderLayout;
    import java.awt.Container;
    import java.awt.FlowLayout;
    import java.awt.Font;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.awt.event.ItemEvent;
    import java.awt.event.ItemListener;
    import java.io.*;import javax.swing.JButton;
    import javax.swing.JComboBox;
    import javax.swing.JDialog;
    import javax.swing.JFileChooser;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JMenu;
    import javax.swing.JMenuBar;
    import javax.swing.JMenuItem;
    import javax.swing.JPanel;
    import javax.swing.JScrollPane;
    import javax.swing.JTextArea;
    import javax.swing.filechooser.FileNameExtensionFilter;
    @SuppressWarnings("serial")
    public class Jishiben extends JFrame { static JTextArea textarea;
    static JFrame frame;
    static JLabel label_1;
    static JLabel label_2;

    class xinjian implements ActionListener{
    public void actionPerformed(ActionEvent e)
    {
    textarea.setText("");
    }
    }

    class dakai implements ActionListener{
    public void actionPerformed(ActionEvent e){
    JFileChooser jf=new JFileChooser();
    FileNameExtensionFilter filter=new FileNameExtensionFilter("*.txt","txt");
    jf.addChoosableFileFilter(filter);
    jf.showOpenDialog(Jishiben.this);
    String fileName=jf.getSelectedFile().getAbsolutePath().trim();
    try{
    BufferedReader br=new BufferedReader(new FileReader(fileName));
    String S;
    for(S=br.readLine();S!=null;S=br.readLine())
    textarea.append(S+"\n");
    br.close();
    }catch(IOException a){
    System.out.println("Open file error");
    a.printStackTrace();
    }
        }
    }

    class baocun implements ActionListener{
    @Override
    public void actionPerformed(ActionEvent e) {
    // TODO Auto-generated method stub
    JFileChooser jf=new JFileChooser();
    FileNameExtensionFilter filter=new FileNameExtensionFilter("*.txt","txt");
    jf.addChoosableFileFilter(filter);
    jf.showOpenDialog(Jishiben.this);
    String fileName=jf.getSelectedFile().getAbsolutePath().trim();
    if(fileName!=null)
    try{
    BufferedWriter bw=new BufferedWriter(new FileWriter(fileName+".txt"));
    PrintWriter pr=new PrintWriter(bw);
    pr.println(textarea.getText());
    bw.close();
    }catch(IOException a){
    System.out.println("Save file error");
    a.printStackTrace();
        }
        }
    }

    class tuichu implements ActionListener{
    @Override
    public void actionPerformed(ActionEvent e) {
    // TODO Auto-generated method stub
    System.exit(0);
    }
        
    }

    class jianqie implements ActionListener{

    @Override
    public void actionPerformed(ActionEvent e) {
    // TODO Auto-generated method stub
    textarea.cut();
    }
        
    }

    class fuzhi implements ActionListener{
    @Override
    public void actionPerformed(ActionEvent e) {
    // TODO Auto-generated method stub
    textarea.copy();
    }
    }

    class zhantie implements ActionListener{

    @Override
    public void actionPerformed(ActionEvent e) {
    // TODO Auto-generated method stub
    textarea.paste();
    }
        
    }
        
    class quanxuan implements ActionListener{

    @Override
    public void actionPerformed(ActionEvent e) {
    // TODO Auto-generated method stub
    textarea.selectAll();
        }
    }

    class shanchu implements ActionListener{
    @Override
    public void actionPerformed(ActionEvent e) {
    // TODO Auto-generated method stub
    textarea.replaceRange("",textarea.getSelectionStart(),textarea.getSelectionEnd());
    }
        
    }
        
    class ziti implements ActionListener{
           JComboBox cb_1;
           JComboBox cb_2;
           JComboBox cb_3;
           Font[] fa={new Font("宋体",Font.BOLD,16),new Font("楷体",Font.ITALIC,16),new Font("Arial",Font.PLAIN,16)};
           Font[] fb={new Font("宋体",Font.BOLD,16),new Font("宋体",Font.ITALIC,16),new Font("Arial",Font.PLAIN,16)};
           Font[] fc={new Font("宋体",Font.PLAIN,16),new Font("宋体",Font.PLAIN,25),new Font("Arial",Font.PLAIN,10)};
           class xuanziti implements ItemListener{
    @Override
    public void itemStateChanged(ItemEvent e) {
    // TODO Auto-generated method stub
    if(cb_1.getSelectedIndex()==1)
    textarea.setFont(fa[1]);
    else if(cb_1.getSelectedIndex()==2)
    textarea.setFont(fa[2]);
    else
    textarea.setFont(fa[0]);
    }
            
           }
           class xuanzixing implements ItemListener{

    @Override
    public void itemStateChanged(ItemEvent e) {
    // TODO Auto-generated method stub
    if(cb_2.getSelectedIndex()==1)
    textarea.setFont(fb[1]);
    else if(cb_2.getSelectedIndex()==2)
    textarea.setFont(fa[2]);
    else
    textarea.setFont(fa[0]);
    }
            
           }
           class xuandaxiao implements ItemListener{
    @Override
    public void itemStateChanged(ItemEvent e) {
    // TODO Auto-generated method stub
    if(cb_3.getSelectedIndex()==1)
    textarea.setFont(fc[1]);
    else if(cb_3.getSelectedIndex()==2)
    textarea.setFont(fc[2]);
    else
    textarea.setFont(fc[0]);
    }
            
           }
           public void actionPerformed(ActionEvent e) {
    // TODO Auto-generated method stub
    JDialog jd=new JDialog(frame,"设置字体",false);
    java.awt.Container c=jd.getContentPane();
    String [] ziti={"宋体","楷体","Arial"};
    String [] zixing={"粗体","斜体","正常"};
    String [] daxiao={"大","中","小"};
    cb_1=new JComboBox(ziti);
    cb_2=new JComboBox(zixing);
    cb_3=new JComboBox(daxiao);
    c.setLayout(new FlowLayout());
    c.add(cb_1);
    cb_1.addItemListener(new xuanziti());
    c.add(cb_2);
    cb_2.addItemListener(new xuanzixing());
    c.add(cb_3);
    cb_3.addItemListener(new xuandaxiao());
    jd.setSize(300,100);
    jd.setVisible(true);

           }
        
    }
        
    class zhuangtailan implements ActionListener{

    @Override
    public void actionPerformed(ActionEvent e) {
    // TODO Auto-generated method stub
    label_2.setText("走总共:Ln"+textarea.getLineCount());
    }
        
    }

    class bangzhu implements ActionListener{

    @Override
    public void actionPerformed(ActionEvent e) {
    // TODO Auto-generated method stub
    JDialog jd=new JDialog(frame,"帮助主题",false);
    Container c=jd.getContentPane();
    c.add(new JLabel("使用方法基本与Windows记事本相同,正在努力完善中......"));
    jd.setSize(400,200);
    jd.setVisible(true);

    }
        
    }
        
    class guanyujishiben implements ActionListener{
    JLabel j1=new JLabel("版权所有,违法必究");
    int i=0;
    class xiayitiao implements ActionListener{

    @Override
    public void actionPerformed(ActionEvent e) {
    // TODO Auto-generated method stub
    String [] S={"此程序完全模仿Windows自带的笔记本程序,仅供初学者学习"};
    if(i<S.length)
    i++;
    j1.setText(S[i]);
    }

    }
                
    class shangyitiao implements ActionListener{

    @Override
    public void actionPerformed(ActionEvent e) {
    // TODO Auto-generated method stub
    String [] S={"此程序完全模仿Windows自带的笔记本程序,仅供初学者学习"};
    if(i>0)
    i--;
    j1.setText(S[i]);
    }
                
    }
    @Override
    public void actionPerformed(ActionEvent e) {
    // TODO Auto-generated method stub
    JDialog jd=new JDialog(frame,"欢迎使用",false);
    Container c=jd.getContentPane();
    JPanel jp=new JPanel();
    JButton jbs=new JButton("下一条");
    JButton jbx=new JButton("上一条");
    jbs.addActionListener(new xiayitiao());
    jbx.addActionListener(new shangyitiao());
    jp.add(jbs);
    jp.add(jbx);
    c.setLayout(new BorderLayout());
    c.add(j1,BorderLayout.CENTER);
    c.add(jp,BorderLayout.SOUTH);
    jd.setSize(400,200);
    jd.setVisible(true);
    }
    }
        
    public Jishiben(){
         super("记事本");
         JMenuBar mBar=new JMenuBar();
         JMenu [] mA={new JMenu("文件"),new JMenu("编辑"),new JMenu("格式"),new JMenu("查看"),new JMenu("帮助")};
         char[] [] mC={{'F','E','O','V','H'},
               {'N','O','S','X'},
               {'U','T','C','P','L','A'},
               {'F'},
               {'S'},
               {'H','A'} };
        
         JMenuItem[][] mI={{new JMenuItem("新建(N)"),new JMenuItem("打开(O)"),new JMenuItem("保存(S)"),new JMenuItem("退出(X)")},
                   {new JMenuItem("剪切(T)"),new JMenuItem("复制(C)"),new JMenuItem("粘贴(P)"),new JMenuItem("全选(A)"),new JMenuItem("删除(L)")},
                   {new JMenuItem("字体(F)")},
                   {new JMenuItem("状态栏(S)")},
                   {new JMenuItem("帮助(F)"),new JMenuItem("关于记事本(A)")}};
         setJMenuBar(mBar);
         int i,j;
         for(i=0;i<mA.length;i++){
         mBar.add(mA[i]);
         mA[i].setMnemonic(mC[0][i]);
         for(j=0;j<mI[i].length;j++){
         mA[i].add(mI[i][j]);
         mI[i][j].setMnemonic(mC[i+1][j]);
         }
         }
         mI[0][0].addActionListener(new xinjian());
         mI[0][1].addActionListener(new dakai());
         mI[0][2].addActionListener(new baocun());
         mI[0][3].addActionListener(new tuichu());
         mI[1][0].addActionListener(new jianqie());
         mI[1][1].addActionListener(new fuzhi());
         mI[1][2].addActionListener(new zhantie());
         mI[1][3].addActionListener(new quanxuan());
         mI[1][4].addActionListener(new shanchu());
         mI[2][0].addActionListener(new ziti());
         mI[3][0].addActionListener(new zhuangtailan());
         mI[4][0].addActionListener(new bangzhu());
         mI[4][1].addActionListener(new guanyujishiben());
    }
        
    public static void main(String args[]){
         frame=new Jishiben();
         frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
         frame.setSize(800,600);
         Container c=frame.getContentPane();
         c.setLayout(new BorderLayout());
         textarea=new JTextArea();
         JScrollPane sta=new JScrollPane(textarea);
         label_2=new JLabel("总共:Ln 0",JLabel.RIGHT);
         label_2.setSize(800,200);
         c.add(sta,BorderLayout.CENTER);
         c.add(label_2,BorderLayout.SOUTH);
         frame.setVisible(true);
    }
    }问题集中在305行,你这行原来的代码是 for(j=0;j<mI[i].length-1;j++);第一: 多了个分号,这就是为什么只显示每个数组的第一个item;
    第二: "j<mI[i].length-1",已经小于了,就不能再减一了。
    改为: for(j=0;j<mI[i].length;j++)就可以正确显示了。