程序已经精减到最少!
用Jbuilder向导生成一个Application,有菜单,工具栏和状态栏!然后在菜单上试各种事件!

解决方案 »

  1.   

    java的问题确实不少,不过建议你通过代码来佐证你的观点,要不你就是忻口开河了
      

  2.   

    归结bug问题的 一般是他的程序有问题!
      

  3.   

    不是吧?老兄?我上星期还用JMenu注册了个MouseListener呢,根本没有你说的
    问题啊。拜托你把自己的程序调好了再来喊叫啊!
      

  4.   

    要不要我证明给你看这不是bug??????我上星期刚用到过MouseListener
      

  5.   

    MouseListener是可以用,但是其中的mouseEntered不能用!
    注意,是菜单不是菜单项!
      

  6.   

    发现BUG你可以去SUN公司去拿钱啦,哈哈
      

  7.   

    那不废话,我要是上个星期没用过,我闲着没事跟你叫什么真啊?说过了我上个星期刚刚用过了,前天看你帖子的时候我又把自己的代码翻出来验证了一下,真真的连个虫毛也没看到,上哪捉虫去?明明可以用,你偏要抬杠,你是不是没给Menu注册鼠标监听啊?
      

  8.   

    package javamediaplayer;import javax.swing.UIManager;
    import java.awt.*;
    public class MediaApp {
      boolean packFrame = false;  //Construct the application
      public MediaApp() {
        MediaFrame frame = new MediaFrame();
        //Validate frames that have preset sizes
        //Pack frames that have useful preferred size info, e.g. from their layout
        if (packFrame) {
          frame.pack();
        }
        else {
          frame.validate();
        }
        //Center the window
        Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
        Dimension frameSize = frame.getSize();
        if (frameSize.height > screenSize.height) {
          frameSize.height = screenSize.height;
        }
        if (frameSize.width > screenSize.width) {
          frameSize.width = screenSize.width;
        }
        frame.setLocation((screenSize.width - frameSize.width) / 2, (screenSize.height - frameSize.height) / 2);
        frame.setVisible(true);
      }  //Main method
      public static void main(String[] args) {
        try {
          UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
        }
        catch(Exception e) {
          e.printStackTrace();
        }
        new MediaApp();
      }
    }
    package javamediaplayer;import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    public class MediaFrame extends JFrame {
      JPanel contentPane;
      JMenuBar jMenuBar1 = new JMenuBar();
      JMenu jMenuFile = new JMenu();
      JMenuItem jMenuFileExit = new JMenuItem();
      JMenu jMenuHelp = new JMenu();
      JMenuItem jMenuHelpAbout = new JMenuItem();
      JLabel statusBar = new JLabel();
      BorderLayout borderLayout1 = new BorderLayout();  //Construct the frame
      public MediaFrame() {
        enableEvents(AWTEvent.WINDOW_EVENT_MASK);
        try {
          jbInit();
        }
        catch(Exception e) {
          e.printStackTrace();
        }
      }  //Component initialization
      private void jbInit() throws Exception  {
        contentPane = (JPanel) this.getContentPane();
        contentPane.setLayout(borderLayout1);
        this.setSize(new Dimension(400, 300));
        this.setTitle("Frame Title");
        statusBar.setText(" ");
        jMenuFile.setText("File");
        jMenuFile.addFocusListener(new MediaFrame_jMenuFile_focusAdapter(this));
        jMenuFileExit.setText("Exit");
        jMenuFileExit.addActionListener(new MediaFrame_jMenuFileExit_ActionAdapter(this));
        jMenuHelp.setText("Help");
        jMenuHelpAbout.setText("About");
        jMenuHelpAbout.addActionListener(new MediaFrame_jMenuHelpAbout_ActionAdapter(this));
        jMenuFile.add(jMenuFileExit);
        jMenuHelp.add(jMenuHelpAbout);
        jMenuBar1.add(jMenuFile);
        jMenuBar1.add(jMenuHelp);
        this.setJMenuBar(jMenuBar1);
        contentPane.add(statusBar, BorderLayout.SOUTH);
      }  //File | Exit action performed
      public void jMenuFileExit_actionPerformed(ActionEvent e) {
        System.exit(0);
      }  //Help | About action performed
      public void jMenuHelpAbout_actionPerformed(ActionEvent e) {
      }  //Overridden so we can exit when window is closed
      protected void processWindowEvent(WindowEvent e) {
        super.processWindowEvent(e);
        if (e.getID() == WindowEvent.WINDOW_CLOSING) {
          jMenuFileExit_actionPerformed(null);
        }
      }  void jMenuFile_focusGained(FocusEvent e) {
           System.exit(0);
      }
    }class MediaFrame_jMenuFileExit_ActionAdapter implements ActionListener {
      MediaFrame adaptee;  MediaFrame_jMenuFileExit_ActionAdapter(MediaFrame adaptee) {
        this.adaptee = adaptee;
      }
      public void actionPerformed(ActionEvent e) {
        adaptee.jMenuFileExit_actionPerformed(e);
      }
    }class MediaFrame_jMenuHelpAbout_ActionAdapter implements ActionListener {
      MediaFrame adaptee;  MediaFrame_jMenuHelpAbout_ActionAdapter(MediaFrame adaptee) {
        this.adaptee = adaptee;
      }
      public void actionPerformed(ActionEvent e) {
        adaptee.jMenuHelpAbout_actionPerformed(e);
      }
    }class MediaFrame_jMenuFile_focusAdapter extends java.awt.event.FocusAdapter {
      MediaFrame adaptee;  MediaFrame_jMenuFile_focusAdapter(MediaFrame adaptee) {
        this.adaptee = adaptee;
      }
      public void focusGained(FocusEvent e) {
        adaptee.jMenuFile_focusGained(e);
      }
    }
      

  9.   

    上面是源代码!
    void jMenuFile_focusGained(FocusEvent e) {
           System.exit(0);
      }
    没有得到执行
      

  10.   

    不能响应focusGained,mouseEntered等事件!
    上面的是测试focusGained的,mouseEntered也试过,没响应!
      

  11.   

    import java.awt.event.*;import javax.swing.*;public class E_MenuBar extends JMenuBar implements ActionListener {
        private ExamFrame owner;
        private JMenu mnuFunction, mnuConfiguration, mnuHelp;
        private JMenuItem miF_OpenEP, miF_StartExam, miF_SubmitEP, miF_Exit, miC_Configuration, miC_SetPassword,
         miH_HelpC, miH_About;
        
        public static E_ConfigDialog configDialog;
        
        private ConfigPasswordDialog configPasswordDialog;
        private SetCP setPasswordDialog;
        
        public E_MenuBar(ExamFrame owner) {
            this.owner = owner;
            //*****************************************************************
            mnuFunction = new JMenu("功能");
            mnuConfiguration = new JMenu("配置");
            mnuHelp = new JMenu("帮助");
            
            miF_OpenEP = new JMenuItem("打开考卷...", new ImageIcon("openss.bic"));
            miF_StartExam = new JMenuItem("开始考试", new ImageIcon("startss.bic"));
            miF_SubmitEP = new JMenuItem("提交考卷", new ImageIcon("submitEPss.bic"));
            miF_Exit = new JMenuItem("退出", new ImageIcon("exitss.bic"));
            
            miC_Configuration = new JMenuItem("配置...", new ImageIcon("configss.bic"));
            miC_SetPassword = new JMenuItem("设定管理密码...");
            
            miH_HelpC = new JMenuItem("帮助主题", new ImageIcon("helpss.bic"));
            miH_About = new JMenuItem("关于...");
            
            configDialog = new E_ConfigDialog();        
            configPasswordDialog = new ConfigPasswordDialog(owner);
            setPasswordDialog = new SetCP(owner, configPasswordDialog);
            //*****************************************************************
            miF_OpenEP.setToolTipText(ExamFrame.TTT_MB_LOAD_TQ);
            miF_StartExam.setToolTipText(ExamFrame.TTT_START_EXAM);
            miF_SubmitEP.setToolTipText(ExamFrame.TTT_SUBMIT_EXAMINATION_PAPER);
            miF_Exit.setToolTipText(ExamFrame.TTT_MB_EXIT);
            miC_Configuration.setToolTipText(ExamFrame.TTT_MB_CONFIG);
            miC_SetPassword.setToolTipText(ExamFrame.TTT_MB_SET_PASSWORD);
            miH_HelpC.setToolTipText(ExamFrame.TTT_MB_HELP_CONTENTS);
            miH_About.setToolTipText(ExamFrame.TTT_MB_ABOUT);
            
            miF_StartExam.setEnabled(false);
            miF_SubmitEP.setEnabled(false);
            //*****************************************************************
            mnuFunction.add(miF_OpenEP);
            mnuFunction.addSeparator();
            mnuFunction.add(miF_StartExam);
            mnuFunction.add(miF_SubmitEP);
            mnuFunction.addSeparator();
            mnuFunction.add(miF_Exit);
            
            mnuConfiguration.add(miC_Configuration);
            mnuConfiguration.addSeparator();
            mnuConfiguration.add(miC_SetPassword);
            
            mnuHelp.add(miH_HelpC);
            mnuHelp.addSeparator();
            mnuHelp.add(miH_About);
            
            add(mnuFunction); add(mnuConfiguration); add(mnuHelp);
            //*****************************************************************
            miF_OpenEP.addActionListener(this);
            miF_StartExam.addActionListener(this);
            miF_SubmitEP.addActionListener(this);
            miF_Exit.addActionListener(this);
            miC_Configuration.addActionListener(this);
            miC_SetPassword.addActionListener(this);
            miH_HelpC.addActionListener(this);
            miH_About.addActionListener(this);
            
            miF_OpenEP.addMouseListener(new MouseProcessor());
            miF_StartExam.addMouseListener(new MouseProcessor());
            miF_SubmitEP.addMouseListener(new MouseProcessor());
            miF_Exit.addMouseListener(new MouseProcessor());
            miC_Configuration.addMouseListener(new MouseProcessor());
            miC_SetPassword.addMouseListener(new MouseProcessor());
            miH_HelpC.addMouseListener(new MouseProcessor());
            miH_About.addMouseListener(new MouseProcessor());
        }
        
        public void setEPLoaded(boolean b) {
            miF_StartExam.setEnabled(b);
            miF_SubmitEP.setEnabled(!b);
        }
        
        public void setExamStarted(boolean b) {
            miF_StartExam.setEnabled(!b);
            miF_SubmitEP.setEnabled(b);
            configDialog.setExamStarted(b);
        }
        
        public void setExamOver(boolean b) {
            miF_StartExam.setEnabled(!b);
            miF_SubmitEP.setEnabled(!b);
            configDialog.setExamStarted(!b);
        }
        
        private class MouseProcessor extends MouseAdapter {
    public void mouseEntered(MouseEvent e) {
    if(e.getSource().equals(miF_OpenEP)) {
        owner.setStatusBarText(ExamFrame.TTT_MB_LOAD_TQ);
    } else if(e.getSource().equals(miF_StartExam)) {
        owner.setStatusBarText(ExamFrame.TTT_START_EXAM);
    } else if(e.getSource().equals(miF_SubmitEP)) {
        owner.setStatusBarText(ExamFrame.TTT_SUBMIT_EXAMINATION_PAPER);
    } else if(e.getSource().equals(miF_Exit)) {
        owner.setStatusBarText(ExamFrame.TTT_MB_EXIT);
    } else if(e.getSource().equals(miC_Configuration)) {
        owner.setStatusBarText(ExamFrame.TTT_MB_CONFIG);
    } else if(e.getSource().equals(miC_SetPassword)) {
        owner.setStatusBarText(ExamFrame.TTT_MB_SET_PASSWORD);
    } else if(e.getSource().equals(miH_HelpC)) {
        owner.setStatusBarText(ExamFrame.TTT_MB_HELP_CONTENTS);
    } else if(e.getSource().equals(miH_About)) {
        owner.setStatusBarText(ExamFrame.TTT_MB_ABOUT);
    }
    }

    public void mouseExited(MouseEvent e) {
    owner.setStatusBarText("");
    }
    }    public void actionPerformed(ActionEvent e) {
            if(e.getSource().equals(miF_OpenEP)) {
                owner.openEP();
            } else if(e.getSource().equals(miF_StartExam)) {
                owner.setExamStarted(true);
            } else if(e.getSource().equals(miF_SubmitEP)) {
                owner.setExamOver(true);
            } else if(e.getSource().equals(miF_Exit)) {
                System.exit(0);
            } else if(e.getSource().equals(miC_Configuration)) {
                configPasswordDialog.setVisible(true);
            } else if(e.getSource().equals(miC_SetPassword)) {
                setPasswordDialog.setVisible(true);
            } else if(e.getSource().equals(miH_HelpC)) {
                JOptionPane.showMessageDialog(new JButton("OK"), "制作中……,谢谢使用!");
            } else if(e.getSource().equals(miH_About)) {
                JOptionPane.showMessageDialog(new JButton("OK"), "模拟考试系统 模拟考试程序 " + ExamFrame.VERSION
                 + "");
            }
        }
    }上上星期刚用到,绝对没问题。
      

  12.   

    请 mrwest(James West) 看清楚!
    我是说的JMenu!
    而你是用的JMenuItem!
    这是两个不同的东西!
      

  13.   

    一般初学者总能发现"bug",嘿嘿
      

  14.   

    是啊,初学者总能发现“bug”,真牛。
      

  15.   

    问一下楼主,JMenu 的mouseEntered事件会存在吗?
    “bug”不是那么好找的,虚心学习吧......
      

  16.   

    Jbuilder 6实例入门中有用JMenu 的focusGained事件来实现动态禁用JMenuItem的代码,发现没有
    focusGained没有发生作用!
      

  17.   

    呵呵,补充呵两句JMenuItem 实现了FocusListener而且是private 的JMenu没有实现它,如果你想在JMenu里的FocusListener起作用可以继承一下JMenu