수다닷컴

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

그림판에서 화면을 모두 지우는 기능에 대한 질문...

늘솜

2023.04.01

기존의 awt 소스를 swing으로 교체하는 작업중,

원래는 MenuPanelListener에서 Canvas를 Canvas c로 받아들여서
g.clearRect(0,0, c.getWidth(), c.getHeight());
이걸로 수행을 했는데 이것을 Canvas 대신에 JPanel로 수행을 하려고
g.clearRect(0,0, panel.getWidth(), panel.getHeight());
이렇게만 바꿨는데 수행이 되지 않네요.
컴파일시 에러는 없지만 기능을 수행하지 못합니다.
Canvas를 JPanel로만 바꿔줬을 뿐인데 왜 안되는지...
요즘 공부하면서 느끼는거지만 차라리 에러 뜨는게 편하네요...^^;
왜 안될까요?import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class MenuPanelListener implements ActionListener {
private String strMenu[] = null;
private Pen p = null;
private JPanel panel = null; //모두지우기 실행을 위해 필요.

public MenuPanelListener(String strMenu[], Pen p, JPanel panel ) {
this.strMenu = strMenu;
this.p = p;
this.panel = panel;
}

//눌린 버튼에 따라 도형의 Pen 객체에 도형의 종류를 기록한다.
public void actionPerformed(ActionEvent ae) {
String strCommand = ae.getActionCommand();

if(strCommand.equals(strMenu[0]))
p.setType(0);
else if(strCommand.equals(strMenu[1]))
p.setType(1);
else if(strCommand.equals(strMenu[2]))
p.setType(2);
else if(strCommand.equals(strMenu[3]))
p.setType(3);
else if(strCommand.equals(strMenu[4]))
p.setType(4);
else if(strCommand.equals(strMenu[5]))
p.setType(5);
else if(strCommand.equals(strMenu[6]))
p.setType(6);
else if(strCommand.equals(strMenu[7])) {
Graphics g = panel.getGraphics();
g.clearRect(0,0, panel.getWidth(), panel.getHeight());
}
}
}

신청하기





COMMENT

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

  • 역곡중

    repaint(), revalidate() ... 감사합니다 해볼께요... 그리고 canvas는... 사용하려고 했는데 패널을 JPanel로 바꾸니 버튼이 안보여지게 되더라고요... 이게 awt와 swing을 같이 쓰면 awt가 swing을 덮어버려서 그렇다고 해서 어쩔수 없이 JPanel도 대체를 한건데... 혹 다른 방법이 있나요?

  • Aileen

    패널에 컴포넌트를 추가하거나 제거할 때는 패널이나 프레임을 다시 그려주어야 합니다.
    repatint()와 revalidate() 요 두 메소드(??)를 패널을 클리어한 후 추가로 호출해주어야 합니다.
    그림판은 보통 패널보다는 캔버스를 사용하는 게 더 좋습니다.
    굳이 스윙으로 바꾼다고 해서 캔버스를 패널로 대체한다는 것은 좋은 방법이 아니라고 생각합니다.

번호 제 목 글쓴이 날짜
2702147 dd 안에 div들어가도 되나요? (8) 꿈 2025-07-20
2702086 [질문]세션 박스 질문입니다. (1) 하연 2025-07-20
2702057 씨언어 숙재좀 풀어주실분 ㅜ.ㅜ (3) 난슬 2025-07-19
2702000 select 사용시 label 문제 질문드립니다. 김예쁨 2025-07-19
2701970 실행파일의 이름은 어디서 변경하는지요???? 호빵녀 2025-07-19
2701856 다시 한번 대체텍스트 관련 질문입니다.. (1) 한샘가온 2025-07-18
2701803 저에게 지식의 자비를~ 베푸소서~!! (4) 봄바람 2025-07-17
2701773 메모장 파일을 읽고 출력하는 내용에 관한 질문입니다. 한국드립 2025-07-17
2701748 아이피 변경 부분이요... 날애 2025-07-17
2701665 자바스크립트 // 왜 if 두개를 쓰면 오류가 나죠? (2) 글리슨 2025-07-16
2701636 모바일웹 게시판 만들기 조언좀 부탁드려요 ㅜㅜ (2) 정훈 2025-07-16
2701610 [질문] AS3 액션으로 스테이지 사이즈를 조절할 수 있는 방법이 있을까요? (1) 앵겨쪼 2025-07-15
2701556 input text에 한글을 default 하려면.. (3) 히나 2025-07-15
2701528 apmsetup 접속이.... (5) 곰돌이 2025-07-15
2701506 암호를 *로 (6) 도도한 2025-07-14
2701475 배열최대값 찾기인데; 소스좀 해석해주세요; Orange 2025-07-14
2701397 세로 100% 푸터부분이 바닥에 안붙어요(세로 100% 되는 소스를 썼거든요) 꽃겨울 2025-07-13
2701369 [긴급]로드해온 swf가 갑자기 사라지는 현상..(익스10) (2) 곰돌이 2025-07-13
2701340 [c++]학교 과제 질문이요...... (3) 기쁨해 2025-07-13
2701311 구글 뉴스검색최적화 작업은 누구의 영역인가요? 많은 조언 부탁드려요! 리나 2025-07-13
<<  이전  1 2 3 4 5 6 7 8 9 10  다음  >>

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