Как заставить событие MouseClicked работать в Java - PullRequest
2 голосов
/ 18 сентября 2011

Я почти уверен, что это очень просто, и мне не хватает только одной или двух строк, но я просто не могу выполнить эту работу, несмотря на поиск решений через Интернет. Я довольно новичок в Java, и моя проблема в настольном приложении.

У меня довольно простое настольное приложение с одной текстовой областью, одной строкой меню с одним меню и тремя пунктами меню. Я хочу редактировать текст текстовой области, когда нажимаю на элемент меню «Статистика» в JFrame.

Вот часть кода, где я создаю строку меню, пункты меню и пункты меню (а также их события):

//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 .

Я могу предоставить весь свой код, если это необходимо, но я подумал, что остальное будет неактуально, поскольку оно не касается строки меню или текстовой области. Я использую Eclipse Java EE IDE.

Ответы [ 2 ]

4 голосов
/ 18 сентября 2011

Я обычно пишу что-то вроде

mnuitemStats.addActionListener(new ActionListener(){
    public void actionPerformed(ActionEvent event)
    {// your logic here;
    }});
3 голосов
/ 18 сентября 2011

Предполагая, что 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);
...