Writing /volume1/Web/Public/dokuwiki/data/log/deprecated/2024-11-15.log failed

差分

このページの2つのバージョン間の差分を表示します。

この比較画面へのリンク

両方とも前のリビジョン前のリビジョン
次のリビジョン
前のリビジョン
study:java:design_pattern:proxy [2021/05/12 00:20] – [Design of CD Cover viewer] bananastudy:java:design_pattern:proxy [2021/05/12 00:27] (現在) – [ImageProxy Class] banana
行 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, g, x, y);  imageIcon.paintIcon(c, g, x, y);
  } else {  } else {
- g.drawString("Loading CD cover, please wait...", x+300, y+190);+ g.drawString("Loading CD cover, please wait...", x + 300, y + 190);
  //이미지를 가져오고 있는 중이 아니면...  //이미지를 가져오고 있는 중이 아니면...
- if(!retrieving){+ if (!retrieving) {
  //이미지 로딩작업 시작.(repaint()메소드는 한 스레드에서만 호출하기 때문에, 스레드 안전성은 확보되었다고  //이미지 로딩작업 시작.(repaint()메소드는 한 스레드에서만 호출하기 때문에, 스레드 안전성은 확보되었다고
  //할 수 있습니다.  //할 수 있습니다.
  retrieving = true;  retrieving = true;
- +
  //사용자 인터페이스가 죽지 않도록 별도의 스레드에서 이미지를 가져옵니다.  //사용자 인터페이스가 죽지 않도록 별도의 스레드에서 이미지를 가져옵니다.
  retrievalThread = new Thread(new Runnable(){  retrievalThread = new Thread(new Runnable(){
  public void run(){  public void run(){
  try {  try {
- //이 스레드 내에서 Icon객체의 인스턴스를 생성했습니다. 이미지가 완전히 로딩되어야 생성자에게 + //이 스레드 내에서 Icon객체의 인스턴스를 생성했습니다. 이미지가 완전히 로딩되어야 생성자에게 객체를 리턴합니다.
- //객체를 리턴합니다.+
  imageIcon = new ImageIcon(imageURL, "CD Cover");  imageIcon = new ImageIcon(imageURL, "CD Cover");
  //이미지가 확보되고 나면 repaint()메소드를 호출해서 화면을 갱신합니다.  //이미지가 확보되고 나면 repaint()메소드를 호출해서 화면을 갱신합니다.
行 157: 行 156:
  }  }
  });  });
- +
  retrievalThread.start();  retrievalThread.start();
  }  }

QR Code
QR Code study:java:design_pattern:proxy (generated for current page)