Ошибка события мыши Java - метод уже определен в классе

Я пытаюсь реализовать метод щелчка и перетаскивания, для которого мне нужны события mousePressed и mouseReleased. Я также буду использовать события mouseClicked, поэтому я реализовал MouseMotionListener и MouseListener.

Однако, когда я перехожу к написанию методов mousePressed, mouseReleased, mouseEntered, mouseExited, я получаю следующую ошибку:

method mousePressed(MouseEvent) is already defined in class BoingPanel

Вот весь класс:

import java.awt.Color;
import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener;
import java.util.ArrayList;
import javax.swing.JPanel;

public class BoingPanel extends JPanel implements MouseMotionListener, MouseListener {

private int width;
private int height;

private int updateRate=40;

ArrayList<Ball> balls;
ArrayList<Line> lines;

private Container box;

private boolean drag = false;

public void mouseEntered(MouseEvent e) { }
public void mouseExited(MouseEvent e) { }
public void mousePressed(MouseEvent e) { }
public void mouseReleased(MouseEvent e) { }

public BoingPanel()
{

    balls = new ArrayList<Ball>();

    balls.add(new Ball(100,0));  // adds test ball
    balls.get(0).setXVelocity(5);
    balls.add(new Ball(100,0));
    balls.add(new Ball(400,50));

    lines = new ArrayList<Line>();
    lines.add(new Line(0, height, width, height));


    gameStart();
}

public BoingPanel(int x, int y)
{
    width=x;
    height=y;


    balls = new ArrayList<Ball>();

    balls.add(new Ball(100,0));  // adds test ball
    balls.get(0).setXVelocity(5);
    balls.add(new Ball(100,0));
    balls.add(new Ball(400,50));

    lines = new ArrayList<Line>();


    box = new Container(width, height);


    gameStart();
}

@Override
public void mouseDragged(MouseEvent me) {
}

@Override
public void mouseMoved(MouseEvent e) {
}

@Override
public void mouseClicked(MouseEvent e) {

}

@Override
public void mousePressed(MouseEvent e) {

}

@Override
public void mouseReleased(MouseEvent e) {

}

@Override
public void mouseEntered(MouseEvent e) {

}

@Override
public void mouseExited(MouseEvent e) {

}

 public void gameStart() {

  // Run the game logic in its own thread.
  Thread gameThread = new Thread() {

     public void run() {
        while (true) {
           // Execute one time-step for the game 
           update();
           // Refresh the display
           repaint();
           // Delay and give other thread a chance
           try {

              Thread.sleep(1000 /updateRate);

           } catch (InterruptedException ex) {}
        }
     }
  };
  gameThread.start();  // Invoke GaemThread.run()
}

private void update()
{
    for(Ball a:balls)  //calls balls updated position
    {
        a.update(box);


    }

}

public void paintComponent(Graphics g)
{
    box.paint(g);

    for(Ball a:balls)  //calls balls updated position
    {
        a.paint(g);
    }

    for(Line b:lines)  //draws lines
    {
        b.paint(g);
    }

}

public void actionPerformed(ActionEvent e)
{
    update(); //changes ball position
    repaint(); //refreshes image
}

}

Что вызывает эту ошибку? Спасибо!


person zephyrus    schedule 28.05.2013    source источник


Ответы (2)


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

public void mouseEntered(MouseEvent e) { }
public void mouseExited(MouseEvent e) { }
public void mousePressed(MouseEvent e) { }
public void mouseReleased(MouseEvent e) { }

По сути, вы реализовали эти методы дважды. Непосредственно до и после конструктора.

Просто удалите одну из этих групп объявлений ...

person MadProgrammer    schedule 28.05.2013
comment
Ах, совершенно упустил это из виду. В следующий раз мне придется более внимательно прочитать свой код. - person zephyrus; 28.05.2013
comment
Не волнуйся, я тоже сначала этого не видел - person MadProgrammer; 28.05.2013

удалите public void mouseEntered(MouseEvent e) { } public void mouseExited(MouseEvent e) { } public void mousePressed(MouseEvent e) { } public void mouseReleased(MouseEvent e) { } и попробуйте

person Lahiruzz    schedule 28.05.2013