0

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) {}

}
Lumi Lu
  • 3,289
  • 1
  • 11
  • 21
Pablo
  • 3
  • 1
  • toFill is in Mousebandymas, MouseInsert for unkown reason extends it. – Severin Dec 09 '14 at 13:30
  • apparently, MouseInsert extends Mousebandymas to allow access to toFill but that's false: when you do "new MouseInsert()", you create a second (useless) toFill. – syllabus Dec 09 '14 at 13:37
  • 1) Why code an applet? If it is due to the teacher specifying it, please refer them to [Why CS teachers should **stop** teaching Java applets](http://programmers.blogoverflow.com/2013/05/why-cs-teachers-should-stop-teaching-java-applets/). 2) Why use AWT? See [this answer](http://stackoverflow.com/questions/6255106/java-gui-listeners-without-awt/6255978#6255978) for many good reasons to abandon AWT using components in favor of Swing. – Andrew Thompson Dec 09 '14 at 23:33

1 Answers1

0

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) {}

}

}
Severin
  • 296
  • 2
  • 8