2011-10-30 38 views
0

我想在矩形外侧单击鼠标时更改背景颜色。我只是不知道如何使用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) {} 
} 
+1

那么你的问题是什么?当你点击任何地方时,输出是什么? – Sibbo

+1

究竟是什么部分你有麻烦?你的'mouseClicked'方法工作吗?如果是这样,你有点鼠标点和矩形的边界,你还需要什么? – Kevin

回答

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

现在你需要计算,如果点击是矩形的界限之外。

+0

当然,您还应该添加一个检查来查看点击是否在矩形内。但是鉴于操作系统的原始代码,他应该知道如何去做。 –

0

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

this.setBackground(Color.red);

的矩形边框将保持绿色(就是你想要什么?)

HTH