2017-05-16 12 views
-1

많은 사각형 모양을 사용하여 게임 맵을 그려야합니다 (많은 픽셀이 포함 된 화면처럼). 나는 그래픽 2DfillRect(int x, int y, width, height) 방법을 사용하고 있습니다. 나는 10 widths10 height으로 사각형을 이렇게 작게 만듭니다.사각형의 마우스 리스너

누군가가 사각형을 클릭하면 어떻게 감지합니까? 나는 다른 질문을 읽었지 만, 마우스 수신기가 내 작은 사각형을 어떻게 감지하는지 아직도 혼란 스럽습니다.

사각형 모양의 픽셀을 만드는 대신 다른 해결책을 줄 수 있습니까? 어쩌면 단추 같은 거요?

public void paint (Graphics g){ 

Graphics2D g2D = (Graphics2D) g; 
for (int j = 0; j<Map.WIDTH; j++){ 
    if(j==100){ 
      if(map[i][j]=='#'){ 
       x=50; 
       y+=10; 
       g2D.setColor(Color.BLACK); 
       g2D.fillRect(x, y, 10, 10); 
       x+=10; 
       y+=0; 

        } 

참고 : 내가 몇 가지 입력 파일에서 반복 처리 (템플릿)이기 때문에 단지

+2

[투어]에 가서 [도움말]을 통해 [질문]을 배우고 유효한 [mcve]를 게시하십시오. 그게 당신의 시도를 보여줍니다 – Frakcool

+1

1) 그건 [맥브] 아니에요, (다시) 링크를 읽어주십시오. 2) 당신은 JFrame을 확장하고 있기 때문에 paintComponent (...)가 아닌'paint (...) '를 오버 라이딩하는 것입니다. 3) 사용자 정의 페인팅에 대한 [튜토리얼] (https://docs.oracle.com/javase/tutorial/uiswing/painting/)을주의 깊게 읽으십시오. 4) 메소드의 첫 번째 라인으로 항상'super.paint()'(또는'tip.p {2} 다음에'super.paintComponent()'를 호출하십시오 ...) – Frakcool

답변

0

그것을 확장하는 클래스가 반복을 무시 여기

여러 개의 사각형을 만들어 내 예제 코드입니다 JPanel?

void setListener(MouseListener listener) { 
    myPanel.addMouseListener(listener); 
} 

은 다음 listenerClass 당신이 그런 일을 수행합니다 : 는 일반적으로 당신이 당신의 JPanel의 또는 무엇에 리스너를 설정해야

import java.awt.event.MouseAdapter; 
import java.awt.event.MouseEvent; 

class ControlButton extends MouseAdapter { 

private MyViewClass view; 

ControlButton(MyViewClass view) { 
    this.view = view; 
    view.setListener(this); 
} 

@Override 
public void mouseClicked(MouseEvent e) { 

    //if my x and y point represent the upper left corner 
    int rectX = view.getMyRectX(); 
    int rectY = view.getMyRectY(); 
    int rectWidth = view.getRectWidth(); 
    int rectHeight = view.getRectHeight(); 
    if (e.getX() > rectX && e.getX() < rectX + rectWidth 
      && e.getY() > rectY && e.getY() < rectY + rectHeight) { 
     System.out.println("YES"); 
    } 
} 

} 물론

을, 나는 당신이 생각 스윙 작업.) 당신이 원하는 것이 아니라면, 당신의 설명에 좀더 정확하게 말하십시오.)