자바 고수님들 좀 부탁드립니다ㅜㅜㅜㅜㅜㅜ

자바 고수님들 좀 부탁드립니다ㅜㅜㅜㅜㅜㅜ

작성일 2013.11.14댓글 1건
    게시물 수정 , 삭제는 로그인 필요

p11_5 마우스를 클릭하면 그 위치로 작은 사각형이 이동하도록 하는 프로그램을 작성하시오. 사각형의 왼쪽 위 모서리가 마우스 클릭 위치로 오게 하시오. 아래 그림을 참고하시오.

  

 

p11_6 마우스를 눌러 원을 그리는 프로그램을 작성하시오. 마우스 클릭 (더블클릭 아님!) 두 번째마다 원이 하나씩 그려지게 하시오. 첫 번째 클릭 위치는 원의 중심이 되고 두 클릭 사이 거리가 원의 반지름이 되게 하시오. 새 원이 그려지면 기존 원은 없어집니다. 아래 뼈대를 참고하시오.

 

package pp11_6;

 

import java.awt.event.MouseListener;

import java.awt.event.MouseEvent;

import javax.swing.JFrame;

 

public class CircleComponentViewer{

 

public static void main(String[] args){

 

CircleComponent component = new CircleComponent();// 그림이 그려질 컴포넌트

 

MouseListener listener = new MousePressListener(component);

component.addMouseListener(listener);// 마우스리스너를 컴포넌트에 등록

 

JFrame frame = new JFrame();

frame.add(component);

 

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

frame.pack();

frame.setVisible(true);

}

}

 

class MousePressListener implements MouseListener{

 

public MousePressListener(CircleComponent comp){

component = comp;

}

 

public void mousePressed(MouseEvent event){// 마우스가 눌려질 때마다 실행되는 메소드

 

// CircleComponent위에서 마우스 클릭된 위치를 알아냄

 

// 첫 클릭이면 그 좌표를 원의 센터로 기억하도록 CircleComponent에게 지시하고 count 증가

// 두 번째 클릭이면 원을 그리도록 CircleComponent에게 지시하고 count를 1로 리셋

 

}

public void mouseReleased(MouseEvent event) {}// 아무 일도 하지 않음

public void mouseClicked(MouseEvent event) {}// 아무 일도 하지 않음

public void mouseEntered(MouseEvent event) {}// 아무 일도 하지 않음

public void mouseExited(MouseEvent event) {}// 아무 일도 하지 않음

 

private CircleComponent component;

private int clickCount=1;

 

}

 

package p11_6;

 

import javax.swing.JComponent;

import java.awt.geom.Ellipse2D;

import java.awt.*;

 

public class CircleComponent extends JComponent{

 

CircleComponent(){

// CircleComponent의 크기를 지정

// ellipse 초기화

 

}

 

public void paintComponent(Graphics g){...}

 

public void setCenterPosition(int x, int y){

// centerX, centerY 지정

}

 

public void drawCircle(int x, int y){

// 반지름 계산

// ellipse 구성

// 그림이 새로이 그려지게 함, paintComponent 메소드가 실행되게 함

}

 

private Ellipse2D.Double ellipse;

private double centerX;

private double centerY;

}

 

참고: CircleComponent의 크기를 지정하는 법

CircleComponent는 JComponent의 서브클래스이기 때문에 JComponent로부터 상속한 메소드를 지원합니다. API 문서를 찾아보면 JComponent에는 아래와 같은 메소드가 있습니다. 이 메소드를 이용하면 됩니다.

void

setPreferredSize(Dimension preferredSize)

Sets the preferred size of this component.

이 메소드를 호출할 때는 Dimension을 인자로 주어야 합니다. Dimension을 API 문서에서 찾아보면 아래와 같은 구성자가 있음을 알 수 있습니다.

Dimension(int width, int height)

Constructs a Dimension and initializes it to the specified width and specified height.

결국 CircleComponent의 크기를 설정해 주려면 아래와 같이 적어줍니다.

setPreferredSize(new Dimension(400, 400));

 

이 문제 2개를 풀어보려고 했는데 너무 어려워서 못풀겠네요ㅜㅜ 고수님들의 도움좀 부탁드립니다.

소스코드좀 부탁드려요ㅜㅜㅜㅜㅜㅜㅜㅜㅜ

 



profile_image 익명 작성일 -



자바 고수님들 부탁드립니다

... 다시깔아봤고, 자바 지웠다가 다시 깔아봤습니다. 저부분에서 에러가... 알려주세요 부탁드립니다 어제부터한 10시간동안 이것만...