Изменение цвета фона при событии мыши - PullRequest
0 голосов
/ 31 октября 2011

Я хочу изменить цвет фона, если щелкнуть мышью снаружи прямоугольника. Я просто не знаю, как использовать MouseEvent.

import java.applet.*;
import java.awt.*;
import java.awt.event.*;

public class AnAppletWithMouseEvents extends Applet implements MouseListener {
public void init()
{
    addMouseListener(this);
}
public void paint(Graphics g)
{

    g.setColor(Color.green);
    g.drawRect(10, 30, 150, 150);
}
public void mouseClicked(MouseEvent e)
{
    String clickDesc;
    if (e.getClickCount() == 2)
        clickDesc = "double";
    else
        clickDesc = "single";

    System.out.println("Mouse was " + clickDesc + "-clicked at location (" +
        e.getX() + ", " + e.getY() + ")");

}
public void mouseEntered(MouseEvent e) {}
public void mouseExited(MouseEvent e) {}
public void mousePressed(MouseEvent e) {}
public void mouseReleased(MouseEvent e) {}
}

Ответы [ 2 ]

0 голосов
/ 31 октября 2011

В методе mouseClicked вы должны проверить, что e.getX() и e.getY() находятся за пределами прямоугольника, а затем вызвать setBackground():

this.setBackground(Color.red);

Рамка прямоугольника останется зеленой (это то, что вы хотите?)

НТН

0 голосов
/ 31 октября 2011
import java.applet.*;
import java.awt.*;
import java.awt.event.*;

public class AnAppletWithMouseEvents extends Applet implements MouseListener {
Color color = Color.green;
public void init()
{
    addMouseListener(this);
}
public void paint(Graphics g)
{

    g.setColor(this.color);
    g.drawRect(10, 30, 150, 150);
}
public void mouseClicked(MouseEvent e)
{
    this.color = color.red;
    this.repaint();

}
public void mouseEntered(MouseEvent e) {}
public void mouseExited(MouseEvent e) {}
public void mousePressed(MouseEvent e) {}
public void mouseReleased(MouseEvent e) {}
}

Теперь вам нужно посчитать, был ли щелчок за пределами прямоугольника.

...