MouseListener ничего не делает - PullRequest
4 голосов
/ 26 декабря 2011

Так что я написал этот код в Java. Он должен печатать «Щелчок мыши», когда я нажимаю кнопку мыши, но ничего не делает.

import java.awt.Graphics;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.util.ArrayList;
import java.util.List;

import javax.swing.ImageIcon;
import javax.swing.JPanel;

public class mainPanel extends JPanel implements MouseListener {

    List<Integer> listLoc;
    List<ImageIcon> listImg;

    ImageIcon objPpc;
    ImageIcon ttlSpace;

    public mainPanel(){
        loadImg();
        fillBck(ttlSpace);
        addTtl(objPpc, 1);
        repaint();
    }

    public void fillBck(ImageIcon fillingImg){
        for(int i = 0; i < 16; i++){
            addTtl(fillingImg, i);
        }
    }

    public void loadImg(){
        objPpc = new ImageIcon ("img/obj/ppcBuild1.png");
        ttlSpace = new ImageIcon ("img/ttl/spaceBuild1.png");
        listLoc = new ArrayList<Integer>();
        listImg = new ArrayList<ImageIcon>();
    }

    public void addTtl(ImageIcon addedImg, int addedLoc){

        System.out.println("----- addTtl -----");
        System.out.println(addedImg);
        listImg.add(addedImg);
        System.out.println(addedLoc);
        listLoc.add(addedLoc);
        System.out.println("----- /addTtl -----");
        System.out.println("");
    }

    public void paint (Graphics g){
        super.paint(g);
        for (int i = 0; i < listImg.size(); i ++) {
            g.drawImage((listImg.get(i)).getImage(), (listLoc.get(i) * (this.getWidth() / 16)), 0, (this.getWidth() / 16) , this.getHeight(), null);

        }
    }

    @Override
    public void mouseClicked(MouseEvent e) {
        // TODO Auto-generated method stub
        System.out.println("Mouse Click");
    }

    @Override
    public void mouseEntered(MouseEvent e) {
        // TODO Auto-generated method stub

    }

    @Override
    public void mouseExited(MouseEvent e) {
        // TODO Auto-generated method stub

    }

    @Override
    public void mousePressed(MouseEvent e) {
        // TODO Auto-generated method stub

    }

    @Override
    public void mouseReleased(MouseEvent e) {
        // TODO Auto-generated method stub

    }

}

Консоль Java только печатает это, без кодов ошибок:

----- addTtl -----

img/ttl/spaceBuild1.png
0
----- /addTtl -----

----- addTtl -----
img/ttl/spaceBuild1.png
1
----- /addTtl -----

----- addTtl -----
img/ttl/spaceBuild1.png
2
----- /addTtl -----

----- addTtl -----
img/ttl/spaceBuild1.png
3
----- /addTtl -----

----- addTtl -----
img/ttl/spaceBuild1.png
4
----- /addTtl -----

----- addTtl -----
img/ttl/spaceBuild1.png
5
----- /addTtl -----

----- addTtl -----
img/ttl/spaceBuild1.png
6
----- /addTtl -----

----- addTtl -----
img/ttl/spaceBuild1.png
7
----- /addTtl -----

----- addTtl -----
img/ttl/spaceBuild1.png
8
----- /addTtl -----

----- addTtl -----
img/ttl/spaceBuild1.png
9
----- /addTtl -----

----- addTtl -----
img/ttl/spaceBuild1.png
10
----- /addTtl -----

----- addTtl -----
img/ttl/spaceBuild1.png
11
----- /addTtl -----

----- addTtl -----
img/ttl/spaceBuild1.png
12
----- /addTtl -----

----- addTtl -----
img/ttl/spaceBuild1.png
13
----- /addTtl -----

----- addTtl -----
img/ttl/spaceBuild1.png
14
----- /addTtl -----

----- addTtl -----
img/ttl/spaceBuild1.png
15
----- /addTtl -----

----- addTtl -----
img/obj/ppcBuild1.png
1
----- /addTtl -----

Когда я нажимаю любую кнопку мыши (даже колесо [MOUSE3]) на экране, она ничего не делает.

Как я могу это исправить?

Ответы [ 2 ]

6 голосов
/ 26 декабря 2011

Ваш код никогда не добавляет MouseListener на панель.Где-то должна быть эта строка:

this.addMouseListener(this);

Когда вы реализуете MouseListener, это означает, что вы способны прослушивать события мыши.Чтобы фактически прослушивать события мыши, слушатель должен быть добавлен (зарегистрирован) к некоторому компоненту, который генерирует события мыши.

3 голосов
/ 26 декабря 2011

Вам необходимо зарегистрировать mouseListener add

addMouseListener(this);

См. Также

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...