我如何对Java applet中的Mouse事件做出反应然后进行相应的绘制?

时间:2011-02-18 09:04:48

标签: java applet

我的作业是

  

编写一个小程序,绘制图14-32左侧所示的房子。当用户点击门或窗户时,他们应该关闭。右边的图显示了门和窗户关闭的房子。

我基本上想要一个Java Applet,如果用户点击一个矩形,另一个是突然创建和绘制的。

到目前为止,这是我的代码。

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class test2 extends JApplet
{
    private final int currentX = 0;


    public void init()
    {
        addMouseListener(new MyMouseListener());
    }

    public void paint (final Graphics g)
    {
        super.paint (g);

        g.drawRect(100, 100, 200, 200);
    }

    private class MyMouseListener extends MouseAdapter
    {

        currentX = e.getX();
    }
}

2 个答案:

答案 0 :(得分:1)

看看Java Tutorial | How to Write a Mouse Listener。它将帮助您确定用户点击的时间和位置。一旦你有了这些(x,y)坐标,你可以检查它们是否位于窗户或门内,如果有,则绘制其他东西。

示例代码:

   public void mouseClicked(MouseEvent e) {
       int x = e.getX();
       int y = e.getY();

       //check if (x,y) lie in a certain rectangle
       if(x>100 && x<300 && y>100 && y<300){
           //set a variable and repaint
           closeDoors = true;
           repaint();
       }
   }

在paint方法中,您需要检查closeDoors变量是否已设置,如果是,请绘制其他内容。

public void paint (final Graphics g){
    super.paint (g);
    g.drawRect(100, 100, 200, 200);
    if(closeDoors){
        g.fillRect(100, 100, 200, 200);
    }
}

答案 1 :(得分:0)

当用户点击门窗时,检查鼠标坐标是否位于窗户或门区域内,如果是,则更换打开的门或打开的窗户的图纸通过绘制一个封闭的,然后看起来像:他们应该关闭

所以,这就是你要做的事情:

  • “house”模型由建筑物,门和窗户组成,每个都由坐标
  • 表示
  • “门”和“窗口”可以“打开”或“关闭”模式绘制
  • 您需要 test 方法检查,如果鼠标单击“窗口”或“打开”门

提示:您当前的MouseListener实现根本不起作用。您必须覆盖MouseAdapter中的方法,并将测试放入相应的方法中。