수다닷컴

  • 해외여행
    • 괌
    • 태국
    • 유럽
    • 일본
    • 필리핀
    • 미국
    • 중국
    • 기타여행
    • 싱가폴
  • 건강
    • 다이어트
    • 당뇨
    • 헬스
    • 건강음식
    • 건강기타
  • 컴퓨터
    • 프로그램 개발일반
    • C언어
    • 비주얼베이직
  • 결혼생활
    • 출산/육아
    • 결혼준비
    • 엄마이야기방
  • 일상생활
    • 면접
    • 취업
    • 진로선택
  • 교육
    • 교육일반
    • 아이교육
    • 토익
    • 해외연수
    • 영어
  • 취미생활
    • 음악
    • 자전거
    • 수영
    • 바이크
    • 축구
  • 기타
    • 강아지
    • 제주도여행
    • 국내여행
    • 기타일상
    • 애플
    • 휴대폰관련
  • 프로그램 개발일반
  • C언어
  • 비주얼베이직

[java] 그림판을 만드는데 안되는 부분의-_-이유를 몰르겠어요;

환찬

2023.04.01

import java.awt.*;
import java.awt.event.*;

public class PaintFour extends Frame implements ActionListener{

//전역변수들 선언
String str = ;
String text = PaintFour;

Color currentColor = Color.ORANGE;

Point first_point, last_point, old_point;

MenuItem menu_file_new, menu_file_open, menu_file_save, menu_file_exit,
menu_draw_pen, menu_draw_line, menu_draw_ellipse,
menu_draw_rectangle, menu_draw_round_rectangle, menu_draw_text,
menu_effect_color,
menu_effect_fill_solid, menu_effect_fill_gradient, menu_effect_fill_image,
menu_effect_thickness_thin, menu_effect_thickness_thick, menu_effect_shadow;

public PaintFour()
{
//메뉴~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

//메뉴바 생성
MenuBar mb = new MenuBar();

/**********************************************************************
File메뉴 생성하고 메뉴바에 등록하기
( new, open, save, exit )

아이템을 [1]생성하기
[2]File메뉴에 붙이기
[3]이벤트처리_리스너등록하기
**********************************************************************/
Menu menu_file = new Menu(파일);

menu_file_new = new MenuItem(새파일);
menu_file.add(menu_file_new);
menu_file_new.addActionListener(this);

menu_file_open = new MenuItem(열기);
menu_file.add(menu_file_open);
menu_file_open.addActionListener(this);

menu_file_save = new MenuItem(저장);
menu_file.add(menu_file_save);
menu_file_save.addActionListener(this);

menu_file_exit = new MenuItem(종료);
menu_file.add(menu_file_exit);
menu_file_exit.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent ae){
//종료
System.exit(0);
}
});

//메뉴바에 등록
mb.add(menu_file);

/**********************************************************************
Draw메뉴 생성하고 메뉴바에 등록하기
( pen, line, ellipes, rectangle, round Rectangle, text )

아이템을 [1]생성하기
[2]Draw메뉴에 붙이기
[3]이벤트처리_리스너등록하기
**********************************************************************/
Menu menu_draw = new Menu(그리기);

menu_draw_pen = new MenuItem(연필);
menu_draw.add(menu_draw_pen);
menu_draw_pen.addActionListener(this);

menu_draw_line = new MenuItem(선);
menu_draw.add(menu_draw_line);
menu_draw_line.addActionListener(this);

menu_draw_ellipse = new MenuItem(원);
menu_draw.add(menu_draw_ellipse);
menu_draw_ellipse.addActionListener(this);

menu_draw_rectangle = new MenuItem(사각형);
menu_draw.add(menu_draw_rectangle);
menu_draw_rectangle.addActionListener(this);

menu_draw_round_rectangle = new MenuItem(둥근사각형);
menu_draw.add(menu_draw_round_rectangle);
menu_draw_round_rectangle.addActionListener(this);

menu_draw_text = new MenuItem(글자);
menu_draw.add(menu_draw_text);
menu_draw_text.addActionListener(this);

//메뉴바에 등록
mb.add(menu_draw);

/**********************************************************************
Effect메뉴 생성하고 메뉴바에 등록하기
( color, fill ( fill_solid, fill_gradient, fill_image ),
thickness ( thin, thick ), shadow )

아이템을 [1]생성하기
[2]Effect메뉴에 붙이기
[3]이벤트처리_리스너등록하기
**********************************************************************/
Menu menu_effect = new Menu(효과);

menu_effect_color = new MenuItem(색깔);
menu_effect.add(menu_effect_color);
menu_effect_color.addActionListener(this);

Menu menu_effect_fill = new Menu(채우기);

//Fill메뉴의 서브메뉴(solid, gradient, image)
menu_effect_fill_solid = new MenuItem(단색);
menu_effect_fill.add(menu_effect_fill_solid);
menu_effect_fill_solid.addActionListener(this);

menu_effect_fill_gradient = new MenuItem(그라디언트);
menu_effect_fill.add(menu_effect_fill_gradient);
menu_effect_fill_gradient.addActionListener(this);

menu_effect_fill_image = new MenuItem(이미지);
menu_effect_fill.add(menu_effect_fill_image);
menu_effect_fill_image.addActionListener(this);

//Effect메뉴에 Fill메뉴 등록
menu_effect.add(menu_effect_fill);

Menu menu_effect_thickness = new Menu(굵기);

//Thickness메뉴의 서브메뉴(thin, thick)
menu_effect_thickness_thin = new MenuItem(얇게);
menu_effect_thickness.add(menu_effect_thickness_thin);
menu_effect_thickness_thin.addActionListener(this);

menu_effect_thickness_thick = new MenuItem(굵게);
menu_effect_thickness.add(menu_effect_thffect_thickness_thick);
menu_effect_thickness_thick.addActionListener(this);

//Effect메뉴에 Thickness메뉴 등록
menu_effect.add(menu_effect_thickness);

menu_effect_shadow = new MenuItem(그림자);
menu_effect.add(menu_effect_shadow);
menu_effect_shadow.addActionListener(this);

//메뉴바에 추가
mb.add(menu_effect);

//메뉴바 프레임에 붙이기
setMenuBar(mb);
//메뉴 끝~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

//GrimPan클래스로 만든 객체를 프레임 중앙에 붙이기~
add(new GrimPan(), BorderLayout.CENTER);

setBounds(100, 100, 800, 600);
setVisible(true);
}

//ActionEvent처리!!!
public void actionPerformed(ActionEvent e)
{
//메뉴아이템 객체를 얻어오기
MenuItem select = (MenuItem)e.getSource();

//이벤트가 발생한 메뉴아이템의 문자열을 얻어오기
//무엇을 선택했는지~~~~~~~
if(select.equals(menu_file_new)){
str = 새파일;
}
else if(select.equals(menu_file_open)){
str = 열기;
}
else if(select.equals(menu_file_save)){
str = 저장;
}
else if(select.equals(menu_file_exit)){
str = 종료;
}
else if(select.equals(menu_draw_pen)){
str = 연필;
}
else if(select.equals(menu_draw_line)){
str = 선;
}
else if(select.equals(menu_draw_ellipse)){
str = 원;
}
else if(select.equals(menu_draw_rectangle)){
str = 사각형;
}
else if(select.equals(menu_draw_round_rectangle)){
str = 둥근사각형;
}
else if(select.equals(menu_draw_text)){
str = 글자;
}
else if(select.equals(menu_effect_color)){
str = 색깔;
}
else if(select.equals(menu_effect_fill_solid)){
str = 단색채우기;
}
else if(select.equals(menu_effect_fill_gradient)){
str = 그라디언트채우기;
}
else if(select.equals(menu_effect_fill_image)){
str = 이미지채우기;
}
else if(select.equals(menu_effect_thickness_thin)){
str = 얇게;
}
else if(select.equals(menu_effect_thickness_thick)){
str = 굵게;
}
else if(select.equals(menu_effect_shadow)){
str = 그림자;
}
}

class GrimPan extends Canvas implements MouseMotionListener, MouseListener
{
int thickness = 3;

public GrimPan(){
addMouseListener(this);
addMouseMotionListener(this);
}

//마우스이벤트!!!!
public void mouseEntered(MouseEvent me){}
public void mouseExited(MouseEvent me){}
public void mouseClicked(MouseEvent me){}

public void mousePressed(MouseEvent me){
first_point = me.getPoint();
old_point = me.getPoint();
}

public void mouseReleased(MouseEvent me){
last_point = me.getPoint();
repaint();
}

public void mouseDragged(MouseEvent me){
last_point = me.getPoint();
repaint();
}

public void mouseMoved(MouseEvent me){}

/**********************************************************************
update()메서드 오버라이드~
이 함수가 호출될 때 화면을 다시 지우고 그리지 않고
현재 화면에 계속 출력될 수 있도록 paint()메서드를 호출한다.
**********************************************************************/
public void update(Graphics g){
paint(g);
}

public void paint(Graphics g){

Graphics2D g2 = (Graphics2D)g;

if(first_point != null && last_point != null) {
//연필 선택!!!
if(str.equals(연필)) {
g.setColor(currentColor);
g2.setStroke(new BasicStroke(thickness ,0,0,1.0f,null, 0));
g.drawLine(first_point.x, first_point.y,
last_point.x, last_point.y);
first_point=last_point;

return;
}
//선 선택!!!
if(str.equals(선)) {
g.setColor(Color.WHITE);
g.drawLine(first_point.x, first_point.y,
old_point.x, old_point.y);

g.setColor(currentColor);
g.drawLine(first_point.x, first_point.y,
last_point.x, last_point.y);
}//원 선택!!!
else if(str.equals(원)) {
g.setColor(new Color(255,255,255));
g.fillOval(first_point.x, first_point.y,
old_point.x-first_point.x,
old_point.y-first_point.y);

g.setColor(currentColor);
g.fillOval(first_point.x, first_point.y,
last_point.x-first_point.x,
last_point.y-first_point.y);
}//사각형 선택!!!
else if(str.equals(사각형)) {
g.setColor(new Color(255,255,255));
g.fillRect(first_point.x, first_point.y,
old_point.x-first_point.x,
old_point.y-first_point.y);

g.setColor(currentColor);
g.fillRect(first_point.x, first_point.y,
last_point.x-first_point.x,
last_point.y-first_point.y);
}//둥근 사각형 선택!!!
else if(str.equals(둥근사각형)) {
g.setColor(new Color(255,255,255));
g.fillRoundRect(first_point.x, first_point.y,
old_point.x-first_point.x,
old_point.y-first_point.y,
20, 20);

g.setColor(currentColor);
g.fillRoundRect(first_point.x, first_point.y,
last_point.x-first_point.x,
last_point.y-first_point.y,
20, 20);
}//글자 선택!!!
else if(str.equals(글자)) {
g.drawString(text, last_point.x, last_point.y);
}
//굵기- 얇게 선택!!!
if(str.equals(얇게)){
this.thickness = 1;
}//굵기- 굵게 선택!!!
else if(str.equals(굵게)){
this.thickness = 10;
}
old_point=last_point;
&nb;
}
}
}

public static void main(String[] args){
new PaintFour();
}
}
----------------------------
graimpan클래스 안에

int thickness = 3; 이렇게 기본값주구서요

펜으로 그리면

3의 굵기로 그려지거든요
근데 메뉴에서 얇게나 굵게를 선택하고서

다시 펜을 선택하면

굵기적용이 안되요...그냥 3으로만 그려져요;;

ㅠㅠ왜 그런지;;;

신청하기





COMMENT

댓글을 입력해주세요. 비속어와 욕설은 삼가해주세요.

  • 니지

    우상단의 x 버튼 처리를 안하셨는지 동작을 안하더군요! [종료] 눌러야 프로그램이 꺼지네요!

  • 핫와인

    연필 사용하다가 굵기 선택하면 다시 연필 클릭해야 사용가능하네요^^

  • 얀

    int thickness = 3;을 GrimPan 에서 지우고 PaintFour 에 넣어주면 굵기가 바뀌네요!

번호 제 목 글쓴이 날짜
2694868 컨택트 폼 7에서 textarea 높이 조정 영글 2025-05-15
2694818 line-height값이 적용이 안되는데 왜 그런 거예요?. letter-spacing,line-height의 기준?? (2) 풍란 2025-05-14
2694795 이것 어떻게 좀 해결좀;; (3) 개럭시 2025-05-14
2694724 코딩시 폰트 문제; ㅠ 후력 2025-05-13
2694696 텍스트박스 입력에 관한 문제입니다. 딥공감 2025-05-13
2694668 [질문] 페이퍼비전 PointLight 관련 질문 드려요.. 두바다찬솔 2025-05-13
2694611 Flash Lite 2.1에서 BitmapData와 Matrix 지원안하나요? (3) 이플 2025-05-12
2694582 IE & 파이어폭스 (2) 흙이랑 2025-05-12
2694553 무비클립안의 duplicate 발동이 안돼네요; 딥보라 2025-05-12
2694523 자바 애플릿 질문좀 ^^ (6) 동이 2025-05-12
2694494 [질문] JAVA 또는 C++ 로 프로그램 개발시.. 레지스터리 등록 관련 의문점? (3) 우람늘 2025-05-11
2694469 익스6에서 css버그 나오는것 해결방법좀요 !!!! (6) 원술 2025-05-11
2694442 로컬에선 잘 나오는데 운영에 반영하면 이상하게 나와요. (8) 목화 2025-05-11
2694412 [질문] 이미지 로딩후 사이즈 조절할때 (1) 아담 2025-05-11
2694391 설치형 블로그 쓰시는 분들 어떤거 쓰세요?? (7) AngelsTears 2025-05-10
2694362 Microsoft SQL Server에서 서버만드는법 어둠 2025-05-10
2694333 for문으로 돌린 이름의 제어 (4) 레이 2025-05-10
2694308 이미지 css 도와주세요 ㅠㅠ (2) 애기 2025-05-10
2694223 [급질문]스크롤스파이의 offset값 진나 2025-05-09
2694195 li에 이미지 넣고 세로로 메뉴 구성하는 경우 (1) 예님 2025-05-09
<<  이전  1 2 3 4 5 6 7 8 9 10  다음  >>

수다닷컴 | 여러분과 함께하는 수다토크 커뮤니티 수다닷컴에 오신것을 환영합니다.
사업자등록번호 : 117-07-92748 상호 : 진달래여행사 대표자 : 명현재 서울시 강서구 방화동 890번지 푸르지오 107동 306호
copyright 2011 게시글 삭제 및 기타 문의 : clairacademy@naver.com