본문 바로가기

만들어 봐요/JAVA & Eclipse

(6)
[Design Pattern] 콜백(Callback) 패턴 콜백(Callback) 패턴 우선 콜백이라는 단어를 모르는 경우를 생각해서 설명하도록 하겠습니다. 일반적으로 호출자(Caller)에 의해서 피호출자(Callee)가 호출되는 형식입니다. 하지만 콜백 패턴은 피호출자가 호출자를 호출하는 것을 말합니다. 이해가 잘 안가시나요? 자바에서 콜백 패턴을 사용하는 코드를 보면서 설명하도록 하겠습니다. C언어의 경우는 함수 포인터를 사용해서 콜백을 구현하지만 자바는 인터페이스(interface)를 이용해 구현합니다. 우선 Callback이라는 인터페이스를 만들어 줍니다. public interface Callback { void call(); } 호출자가 될 Task 클래스를 만듭니다. 이 클래스에서는 콜백 인터페이스를 인자로 받아서 호출해주는 코드를 가지고 있습니다..
[Design Pattern] Balking 패턴 Balking 패턴 객체가 특정한 상태에 놓여 실행을 할 수 없는 상태이거나 지금 처리하면 안되는 상태일 때 객체가 'balk'(멈춤 상태)를 리턴하는 패턴이다. 예를 들어, 자바에서 ZIP파일이 열려있지 않은 상태에서 내용을 가져오려고 get()을 호출하면 객체는 'balk'를 요청한다. public class Example { private boolean jobInProgress = false; public void job() { synchronized(this) { if (jobInProgress) { return; } jobInProgress = true; } // Code to execute job goes here // ... } void jobCompleted() { synchronized(..
Eclipse 아이콘들 쉽게 재활용하기 Windows -> Show view -> Others... 선택 Plug-in development -> Plug-in Image Browser 선택 현재 이클립스의 플러그인들 중에서 이미지를 찾아서 보여주거나 타겟 플랫폼의 플러그인들을 검색해서 이미지들을 가져와서 보여준다. 재사용법: extentions에서 사용하는 법: 해당 아이콘을 선택하면 밑에 Reference 부분을 복사해서 icon 패스에 바로 붙여넣기해서 사용한다. 코드에서 사용법 Reference를 보면 플러그인의 id와 플러그인 안에서의 이미지 path정보가 담겨있다. 이것을 이용해서 Image를 만들어 사용한다. 예) Reference: platform:/plugin/org.eclipse.pde.ui/icons/elcl16/packa..
윈도우에서 경로를 toURI()로 호출할 경우 exception 발생 Windows의 경우 경로에 공백문자가 들어갈 수 있다. 이 공백 문자때문에 toURI()를 호출하면 exception이 발생한다.URL객체일 경우 toURI()를 호출하지 말고 getPath()를 호출해서 File객체로 만든 다음에 File객체의 경로를 가져오도록 한다.
Eclipse Preference에 값 저장하기 IPreferenceStore preferences = PlatformUI.getPreferenceStore();preferences.setValue(KEY, VALUE); KEY : StringVALUE : Object워크스페이스에 설정한 KEY 값으로 VALUE를 저장한다.
TreeViewer 컬럼 사이즈를 데이터에 맞춰서 resize하기 investorTree.addListener(SWT.Collapse, new Listener(){ @Override public void handleEvent(Event e) { expandAndResize(false, (TreeItem) e.item); } }); investorTree.addListener(SWT.Expand, new Listener() { @Override public void handleEvent(Event event) { expandAndResize(false, (TreeItem) event.item); } }); private static void expandAndResize(Boolean expand_, TreeItem item_) { System.out.println( (e..

반응형