简体   繁体   English

Java MouseListener在Applet中什么也不做

[英]Java MouseListener do nothing in Applet

I'm almost totally new in programming and Java. 我几乎是编程和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. 您的MouseInsert不是Mousebandymas的内部类(顺便说一句,为什么要扩展Mousebandymas?),所以当您更改为toFill时,您还要更改其他toFill,而不是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) {}

}

}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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