2011-10-30 4 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

물론 클릭이 직사각형 안에 있는지 확인해야합니다. 그러나 op의 원본 코드를 보면, 어떻게해야하는지 이해해야합니다. –

0

mouseClicked 방법, 당신은 e.getX()e.getY()이 사각형 외부에 있는지 테스트하고 setBackground()가 호출해야합니다 :

this.setBackground(Color.red);

사각형 테두리 녹색으로 계속 (당신이 원하는 것이 무엇입니까?)

HTH