如何使MouseClicked事件在java中工作

时间:2011-09-17 21:50:02

标签: java swing events mouseevent

我很确定这很容易,而且我只缺少一行或两行,但尽管在互联网上寻找解决方案,我仍然无法做到这一点。我对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);

这是Mousclicked功能:

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

    }

我想要做的是当我点击 mnuitemStats 时, txtTexte 会在其中写入“asdf”。不知何故,这不起作用。看起来该程序甚至没有进入该功能。我查看了一些教程,除了对象名称之外,它们几乎和我的代码相同,因为大多数教程使用 JButton 而不是 JMenuItem

如果需要,我可以提供我的全部代码,但我认为其余部分无关紧要,因为它没有触及菜单栏或textarea。我正在使用Eclipse Java EE IDE。

2 个答案:

答案 0 :(得分:4)

我经常写点像

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

答案 1 :(得分:3)

假设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);