Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/389.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 穆塞利斯滕纳什么也不做_Java_Swing_Mouselistener - Fatal编程技术网

Java 穆塞利斯滕纳什么也不做

Java 穆塞利斯滕纳什么也不做,java,swing,mouselistener,Java,Swing,Mouselistener,所以我用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;

所以我用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

    }

}
当我按下屏幕上的任何鼠标按钮(甚至滚轮[MOUSE3])时,它什么也不做

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

    }

}

我怎样才能解决这个问题呢?

您的代码从未向面板添加任何鼠标侦听器。你应该在某个地方有这句话:

this.addMouseListener(this);

当您实现MouseListener时,这意味着您可以监听鼠标事件。要实际侦听鼠标事件,必须将侦听器添加(注册)到生成鼠标事件的某些组件。

您需要注册鼠标侦听器添加

addMouseListener(this);
另请参见


请学习java命名约定并坚持使用。顺便说一句,在Swing中,要覆盖自定义绘制的方法是paintComponent(而不是paint)