【问题标题】:How to make MouseClicked event work in java如何使 MouseClicked 事件在 java 中工作
【发布时间】:2011-11-19 11:01:23
【问题描述】:

我很确定这很容易,而且我只遗漏了一两行,但尽管在互联网上搜索了解决方案,但我还是无法完成这项工作。我对 java 还很陌生,我的问题出在桌面应用程序中。

我有一个非常简单的桌面应用程序,它有一个文本区域、一个菜单栏、一个菜单和 3 个菜单项。当我单击 JFrame 中的 Statistic 菜单项时,我想编辑文本区域的文本。

这是我创建菜单栏、菜单和菜单项(以及它们的事件)的代码部分:

//menu
        mnuRevision.setText("Revision");

    mnuitmStats.setText("Statistique");
    mnuitmStats.addMouseListener(new java.awt.event.MouseAdapter() {
        public void mouseClicked(java.awt.event.MouseEvent evt) {
            mnumnuitmStatsMouseClicked(evt);
        }
    });
    mnuRevision.add(mnuitmStats);

    mnuitmOrthographe.setText("Grammaire et orthographe");
    mnuitmOrthographe.addMouseListener(new java.awt.event.MouseAdapter() {
        public void mouseClicked(java.awt.event.MouseEvent evt) {
            mnuitmOrthographeMouseClicked(evt);
        }
    });
    mnuRevision.add(mnuitmOrthographe);

    mnuitmAnalyse.setActionCommand("Analyse");
    mnuitmAnalyse.setText("Analyse");
    mnuRevision.add(mnuitmAnalyse);

    jMenuBar1.add(mnuRevision);

    setJMenuBar(jMenuBar1);

这里是鼠标点击功能:

    private void mnumnuitmStatsMouseClicked(java.awt.event.MouseEvent evt){
        this.txtTexte.setText("asdf");
        this.repaint();

    }

我想要做的是当我点击 mnuitemStats 时,txtTexte 将获得其中写入的文本 "asdf"。不知何故,这行不通。看起来程序甚至没有进入函数。我查看了一些教程,除了对象名称之外,它们的代码几乎与我相同,因为大多数教程使用 JButton 而不是 JMenuItem

如果需要,我可以提供我的整个代码,但我认为其余部分无关紧要,因为它不会触及菜单栏或文本区域。我正在使用 Eclipse Java EE IDE。

【问题讨论】:

    标签: java swing events mouseevent


    【解决方案1】:

    我通常会写一些类似的东西

    mnuitemStats.addActionListener(new ActionListener(){
        public void actionPerformed(ActionEvent event)
        {// your logic here;
        }});
    

    【讨论】:

      【解决方案2】:

      假设 mnuitmStats 是一个 JMenuItem,它应该是。更多代码会有所帮助,但假设您应该为此使用 ActionListener 而不是 MouseListener。

      类似:

      class MenuActionListener implements ActionListener {
        public void actionPerformed(ActionEvent e) {
          //do something
      
        }
      }
      

      JMenuBar menuBar = new JMenuBar();
      JMenu fileMenu = new JMenu("File");
      menuBar.add(fileMenu);
      
      JMenuItem newMenuItem = new JMenuItem("New");
      newMenuItem.addActionListener(new MenuActionListener());
      fileMenu.add(newMenuItem);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-05-02
        • 2011-09-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多