简体   繁体   中英

Java MouseListener do nothing in Applet

I'm almost totally new in programming and Java. I don't understand why this don't work. My target is to fill Rectangle, then user pressed Mouse, but it do nothing. Why? My main class:

package mousebandymas;

import java.applet.Applet;
import java.awt.Color;
import java.awt.Graphics;

public class Mousebandymas extends Applet{
    boolean toFill = false;
    public void init(){
        super.init();
        setSize(500,500);
        setBackground(Color.RED);
        this.addMouseListener(new MouseInsert());
    }
    public void paint(Graphics g){
        g.setColor(Color.GREEN);
        g.drawRect(100, 200, 100, 100);
        g.drawRect(300, 200, 100, 100);
        if (toFill == true){
            g.fillRect(100, 200, 100, 100);
        }
    }

}

My Mouse class:

package mousebandymas;

import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener;

public class MouseInsert extends Mousebandymas implements MouseListener, MouseMotionListener{

public void mouseClicked(MouseEvent e) {
    int mx = e.getX();
    int my = e.getY();
    if (mx > 1){
     toFill = true; // *Here main problem, don't work*
     repaint();
    }
}
public void mouseEntered(MouseEvent e) {}
public void mouseExited(MouseEvent e) {}
public void mousePressed(MouseEvent e) {}
public void mouseReleased(MouseEvent e) {}
public void mouseDragged(MouseEvent e) {}
public void mouseMoved(MouseEvent e) {}

}

Your MouseInsert is not an inner class for the Mousebandymas (by the way, why do you extend Mousebandymas?), so when you change toFill, you change some other toFill, not that one from Mousebandymas. You meant something like this:

package mousebandymas;

import java.applet.Applet;
import java.awt.Color;
import java.awt.Graphics;

public class Mousebandymas extends Applet{
    boolean toFill = false;
    public void init(){
        super.init();
        setSize(500,500);
        setBackground(Color.RED);
        this.addMouseListener(new MouseInsert());
    }
    public void paint(Graphics g){
        g.setColor(Color.GREEN);
        g.drawRect(100, 200, 100, 100);
        g.drawRect(300, 200, 100, 100);
        if (toFill == true){
            g.fillRect(100, 200, 100, 100);
        }
    }

private class MouseInsert implements MouseListener, MouseMotionListener{

public void mouseClicked(MouseEvent e) {
    int mx = e.getX();
    int my = e.getY();
    if (mx > 1){
     toFill = true; // *Here main problem, don't work*
     repaint();
    }
}
public void mouseEntered(MouseEvent e) {}
public void mouseExited(MouseEvent e) {}
public void mousePressed(MouseEvent e) {}
public void mouseReleased(MouseEvent e) {}
public void mouseDragged(MouseEvent e) {}
public void mouseMoved(MouseEvent e) {}

}

}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM