[Java] jar파일에 이미지를 넣을때 주의 하세요..
오늘 프로젝트를 정리 하면서 이미지를 jar안에 넣는 작업을 했습니다. netbeans에서 프로젝트를 하고 있었으므로 jar파일 만드는 것은 알아서 해주지만, 이미지를 넣기 위해서 .class파일들이 모여 있는 곳에 이미지를 옮기고 코드를 수정했습니다. 하지만!!! 동작을 하지 않는 것입니다.. jar파일에 있는 리소스를 가져 오기 위해서 ClassLoader의 getResource 메소드를 사용해야 합니다. 기존에 직접 파일의 경로로 가서 파일을 직접 읽어 왔던 코드를 jar파일에 있는 것을 classloader를 통해 읽어 오는 코드로 변경했는데 동작을 하지 않아서 고생을 하고 원인을 찾아 해매 두시간을 헤매고 있었습니다. 결국 일일이 어디서 문제가 있는지 디버깅 코드를 넣어 가면서 테스트를 하는데 ..
2010.01.05
no image
[Flower] 디버깅 창을 구현 하였습니다.
아쉬움이 있는데 디버깅 창을 구현 하였습니다. 디버깅 버튼을 누르면 창이 생기고, 디버깅 종료 버튼을 누르면 창이 사라지도록 했습니다. 이 창은 새로 팝업 되는 창이 아니라, canvas가 위치 하는 곳의 영역 일부를 빌려 위치합니다. 실제 구현은 디버깅 버튼이 눌리면, canvas를 빼내고, JSpiltePane에 canvas와 JTable을 담은 JScrollPane(JTable담고 있음)을 담아서 canvas가 위치 한 곳에 넣어 줌니다. 실제 디버깅 툴의 UI를 보면 도킹이라고 불리는 기술을 사용하는데 저는 그것을 어떻게 구현하는지도 배울 시 간도 부족 하므로 고정된 곳에 넣어 두었습니다. 그래도 전보다 UI가 이뻐지고 있어 만족 하고 있습니다. 상세한 요구 사항을 만족하도록 커스티마이징 하였고 ..
2009.11.13
UndoRedo를 구현 하고 있습니다.4
createColne 매소드를 모든 심볼에 대해서 구현을 완료 했습니다. concreteSymbol의 clone함수를 구현하려다 보니 부모 클래스의 멤버 변수도 모두 복사해야 다 던데요.. 그부분을 각각의 concreteSymbol에 넣으니까 각 클래스에 중복된 코드가 엄청 많아 졌습니다. 부모클래스에 그 코드를 넣으려고 해도 자식클래스가 어떤 타입인지 모르기 때문에 결국 다시 하위 클래스에서 다시 복사해야 할 것 같아서 일단 모두 concreteSymbol에서 모두 복사하도록 하였습니다. 그렇게 하고 모듈 테스트를 위해 여전히 도형의 생성에 대해서만 redo undo 를 체크 했는데 생각하는 것과 다른 결과가 나왔습니다. undo를 많이 하고 나서 다른 작업을 할때는 redo할것이 없어야 합니다.( 다..
2009.10.28
Type safe enumeration pattern을 적용하고 있습니다.
기나긴 고민뒤에 Type safe enumeration pattern이라는 것을 발견하고 public static finale int 로 정의된 열거 형 변수들을 정리 하고 있습니다. C언어에서는 enum구문이 자바에는 없습니다. (Enumeration이라는 인터페이스가 있지만 C/C++의 enum과 달리 iterator입니다.) C에서는 #define TERMINAL 0 #define PROCESS 1 #define LINE 2 ... 이런식으로 하던지, typedef enum { TERMINAL, PROCESS, LINE, ARROW, ...}symbolType; 이런식으로 사용했습니다. 하지만 자바에서는(물론 자바에서만은 아니겠지만 지금은 자바만 생각하고 있습니다.) 어떻게 해야 할지 몰랐습니다. ..
2009.10.20