Writing /volume1/Web/Public/dokuwiki/data/log/deprecated/2024-11-15.log failed
差分
このページの2つのバージョン間の差分を表示します。
両方とも前のリビジョン前のリビジョン次のリビジョン | 前のリビジョン | ||
study:java:design_pattern:proxy [2008/10/13 15:01] – banana | study:java:design_pattern:proxy [2021/05/12 00:27] (現在) – [ImageProxy Class] banana | ||
---|---|---|---|
行 2: | 行 2: | ||
원격 프록시(Remote Proxy)는 일반적인 프록시 패턴(Proxy Pattern)을 구현하는 방법 가운데 하나입니다. | 원격 프록시(Remote Proxy)는 일반적인 프록시 패턴(Proxy Pattern)을 구현하는 방법 가운데 하나입니다. | ||
이 외에도 몇 가지 변형된 방법이 있는데, 잠시 후에 알아보도록 하겠습니다. 일단 지금은 일반 프록시 패턴 | 이 외에도 몇 가지 변형된 방법이 있는데, 잠시 후에 알아보도록 하겠습니다. 일단 지금은 일반 프록시 패턴 | ||
- | 에 대해서 살표보도록 하겠습니다. | + | 에 대해서 살펴보도록 하겠습니다. |
프록시 패턴은 다음과 같이 정의됩니다. | 프록시 패턴은 다음과 같이 정의됩니다. | ||
行 86: | 行 86: | ||
- **이미지를 가져오는 동안에는 " | - **이미지를 가져오는 동안에는 " | ||
- **이미지 로딩이 끝나면 paintIcon(), | - **이미지 로딩이 끝나면 paintIcon(), | ||
- | - **사용자가 새로운 이미지를 요청하면 프록시를 새로 만들고 위이 과자을 새로 진행합니다.** | + | - **사용자가 새로운 이미지를 요청하면 프록시를 새로 만들고 위의 과정을 새로 진행합니다.** |
行 103: | 行 103: | ||
ImageIcon imageIcon; | ImageIcon imageIcon; | ||
URL imageURL; | URL imageURL; | ||
- | Thread retrievalThread; | + | Thread retrievalThread; |
boolean retrieving = false; | boolean retrieving = false; | ||
行 116: | 行 116: | ||
*/ | */ | ||
public int getIconHeight() { | public int getIconHeight() { | ||
- | if(imageIcon!=null) return imageIcon.getIconHeight(); | + | if (imageIcon != null) return imageIcon.getIconHeight(); |
else return 600; | else return 600; | ||
} | } | ||
行 124: | 行 124: | ||
*/ | */ | ||
public int getIconWidth() { | public int getIconWidth() { | ||
- | if(imageIcon!=null) return imageIcon.getIconWidth(); | + | if (imageIcon != null) return imageIcon.getIconWidth(); |
else return 800; | else return 800; | ||
} | } | ||
行 132: | 行 132: | ||
*/ | */ | ||
public void paintIcon(final Component c, Graphics g, int x, int y) { | public void paintIcon(final Component c, Graphics g, int x, int y) { | ||
- | if(imageIcon!=null){ | + | if (imageIcon != null) { |
// | // | ||
imageIcon.paintIcon(c, | imageIcon.paintIcon(c, | ||
} else { | } else { | ||
- | g.drawString(" | + | g.drawString(" |
// | // | ||
- | if(!retrieving){ | + | if (!retrieving) { |
// | // | ||
//할 수 있습니다. | //할 수 있습니다. | ||
retrieving = true; | retrieving = true; | ||
- | + | ||
// | // | ||
retrievalThread = new Thread(new Runnable(){ | retrievalThread = new Thread(new Runnable(){ | ||
public void run(){ | public void run(){ | ||
try { | try { | ||
- | // | + | // |
- | //객체를 리턴합니다. | + | |
imageIcon = new ImageIcon(imageURL, | imageIcon = new ImageIcon(imageURL, | ||
// | // | ||
行 157: | 行 156: | ||
} | } | ||
}); | }); | ||
- | + | ||
retrievalThread.start(); | retrievalThread.start(); | ||
} | } | ||
行 200: | 行 199: | ||
} | } | ||
</ | </ | ||
+ | |||
+ | |||
===== Test of CD Cover Viewer ===== | ===== Test of CD Cover Viewer ===== | ||
드디어 새로 배운 가상 프록시를 테스트해 볼 때가 되었습니다. 윈도우를 만들고 프레임을 준비하고 메뉴를 설치하고 | 드디어 새로 배운 가상 프록시를 테스트해 볼 때가 되었습니다. 윈도우를 만들고 프레임을 준비하고 메뉴를 설치하고 | ||
行 269: | 行 270: | ||
</ | </ | ||
- | </code> | + | **테스트 해 볼 것...** |
+ | - **메뉴를 이용하여 다른 CD 커버를 불러옵니다. 이미지 로딩이 완료될 때까지 프록시에서 로딩중이라는 메세지를 보여주는 것을 확인해 봐야 되겠죠? | ||
+ | - **로딩중이라는 메시지가 화면에 표시된 상태에서 윈도우 크기를 조절해 봅시다. 프록시에서 이미지를 로딩하고 있을 때도 스윙 윈도우가 멈추거나 하진 않는지 확인해 봅시다.** | ||
+ | - **%%ImageProxyTestDrive%%에 여러분이 가지고 있는 CD를 추가해 봅시다.** | ||
+ | 다음은 로딩중일 때의 화면입니다. | ||
+ | |||
+ | {{: | ||
+ | |||
+ | 로딩이 완료되면 이런 윈도우가 만들어집니다. | ||
+ | |||
+ | {{: | ||
+ | |||
+ | ===== reference ===== | ||
+ | *[[http:// | ||
+ | ]] | ||
+ | |||