【问题标题】:Changing the background color on mouse event更改鼠标事件的背景颜色
【发布时间】:2011-12-18 09:25:50
【问题描述】:

当鼠标点击矩形的外部时,我想改变背景颜色。我只是不知道如何使用 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) {}
}

【问题讨论】:

  • 那么你的问题是什么?单击任意位置时的输出是什么?
  • 究竟是哪一部分有问题?你的mouseClicked 方法有效吗?如果是这样,你有鼠标点击的点和矩形的边界,你还需要什么?

标签: java applet mouseevent awt


【解决方案1】:
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) {}
}

现在您需要计算点击是否超出矩形边界。

【讨论】:

  • 当然,您还应该添加检查以查看单击是否在矩形内。但是考虑到操作的原始代码,他应该知道如何做到这一点。
【解决方案2】:

在mouseClicked方法中,你应该测试e.getX()和e.getY()在矩形之外,然后调用setBackground():

this.setBackground(Color.red);

矩形边框将保持绿色(这是您想要的吗?)

HTH

【讨论】:

    猜你喜欢
    • 2011-04-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-07
    • 2015-09-29
    相关资源
    最近更新 更多