亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? imageviewer.java

?? 基于jxta的局域網(wǎng)P2P文件共享,可以實現(xiàn)局域網(wǎng)中的文件p2p共享,實現(xiàn)文件快速傳輸及交流
?? JAVA
字號:
package connex.plugins.slideshow;

import org.jdesktop.swingx.JXImageView;
import java.awt.event.InputEvent;
import javax.swing.JComponent;
import javax.swing.TransferHandler;
import javax.imageio.ImageIO;
import java.awt.datatransfer.Transferable;
import java.net.URL;
import java.io.File;
import java.util.List;
import java.awt.datatransfer.DataFlavor;
import java.awt.image.BufferedImage;
import java.awt.Image;
import java.io.IOException;
import java.util.ArrayList;
import org.jdesktop.swingx.util.PaintUtils;
import java.awt.datatransfer.UnsupportedFlavorException;
import javax.swing.AbstractAction;
import javax.swing.Action;
import java.awt.event.ActionEvent;
import java.awt.event.HierarchyEvent;
import java.awt.event.HierarchyBoundsAdapter;

/**
 * <p>Title: </p>
 *
 * <p>Description: </p>
 *
 * <p>Copyright: Copyright (c) 2006</p>
 *
 * <p>Company: </p>
 *
 * @author not attributable
 * @version 1.0
 */
public class ImageViewer
    extends JXImageView {
  private ImageListener listener;
  private Image image;

  public ImageViewer() {
  }

  public void setImageListener(ImageListener listener) {
    this.listener = listener;
    this.addHierarchyBoundsListener(new HierarchyBoundsAdapter() {
      public void ancestorResized(HierarchyEvent e) {
        this_ancestorResized(e);
      }
    });
    try {
      this.setTransferHandler(new DnDxHandler());
    } catch (ClassNotFoundException ex) {
    }

  }
  public void this_ancestorResized(HierarchyEvent e) {
    try {
      fitImageToScreen();
    } catch (Exception ex) {
    }
 }


  /**
   * Set the current image to an image pointed to by this File.
   * @param file a File pointing to an image
   * @throws java.io.IOException thrown if the image cannot be loaded
   */
  public void setImage(File file) throws IOException {
    System.out.println("reading: " + file.getAbsolutePath());
    setImage(ImageIO.read(file));
    if(getImage()!=null){
      listener.receiveImage(file);
    }
  }

  /**
   * Sets the current image. Can set null if there should be no image show.
   * @param image the new image to set, or null.
   */
  public void setImage(Image image) {
    super.setImage(image);
    try {
      fitImageToScreen();
    } catch (Exception ex) {
    }
    repaint();
  }

  public void fitImageToScreen() {
    if (getImage().getWidth(null) > getWidth() ||
        getImage().getHeight(null) > getHeight()) {

      double fit = (new Double("" + getWidth()) /
                    new Double(getImage().getWidth(null) + ""));

      setScale(fit);
      if ( (getImage().getHeight(null) * fit) > getHeight()) {
        fit = (new Double("" + getHeight()) /
               new Double(getImage().getHeight(null) + ""));

        setScale(fit);

      }
    }

  }

  public Action getZoomOutAction() {
    Action action = new AbstractAction() {
      public void actionPerformed(ActionEvent actionEvent) {
        setScale(getScale() * 0.9);
      }
    };
    action.putValue(Action.NAME, "Zoom Out");
    return action;
  }

  /**
   * Gets an action which will zoom the current image in by a factor of 2
   * @return an action
   */
  public Action getZoomInAction() {
    Action action = new AbstractAction() {
      public void actionPerformed(ActionEvent actionEvent) {
        setScale(getScale() * 1.1);
      }
    };
    action.putValue(Action.NAME, "Zoom In");
    return action;
  }

  public Action getOriginalSizeAction() {

    Action action = new AbstractAction() {
      public void actionPerformed(ActionEvent actionEvent) {
        setScale(1.0);
      }
    };
    action.putValue(Action.NAME, "OriginalSize");
    return action;
  }
  /**
     * Sets whether or not the user can drag images. When set to true the user can
     * drag the photo around with their mouse. Also the cursor will be set to the
     * 'hand' cursor. When set to false the user cannot drag photos around
     * and the cursor will be set to the default.
     * @param editable whether or not the user can drag images
     */




  private class DnDxHandler
      extends TransferHandler {
    DataFlavor urlFlavor;

    public DnDxHandler() throws ClassNotFoundException {
      urlFlavor = new DataFlavor("application/x-java-url;class=java.net.URL");
    }

    public void exportAsDrag(JComponent c, InputEvent evt, int action) {
      //System.out.println("exportting as drag");
      super.exportAsDrag(c, evt, action);
    }

    public int getSourceActions(JComponent c) {
      //System.out.println("get source actions: " + c);
      return COPY;
    }

    protected void exportDone(JComponent source, Transferable data, int action) {
      System.out.println("exportDone: " + source + " " + data + " " + action);
    }

    public boolean canImport(JComponent c, DataFlavor[] flavors) {
      //System.out.println("canImport:" + c);
      for (int i = 0; i < flavors.length; i++) {
        //System.out.println("testing: "+flavors[i]);
        if (DataFlavor.javaFileListFlavor.equals(flavors[i])) {
          return true;
        }
        if (DataFlavor.imageFlavor.equals(flavors[i])) {
          return true;
        }
        if (urlFlavor.match(flavors[i])) {
          return true;
        }

      }
      return false;
    }

    protected Transferable createTransferable(JComponent c) {
      System.out.println("creating a transferable");
      JXImageView view = (JXImageView) c;
      return new ImageTransferable(view.getImage(),
                                   view.getExportName(), view.getExportFormat());
    }

    public boolean importData(JComponent comp, Transferable t) {
      System.out.println("importData called");
      if (canImport(comp, t.getTransferDataFlavors())) {
        try {
          if (t.isDataFlavorSupported(DataFlavor.javaFileListFlavor)) {
            List files = (List) t.getTransferData(DataFlavor.javaFileListFlavor);
            System.out.println("doing file list flavor");
            if (files.size() > 0) {
              File file = (File) files.get(0);
              System.out.println("readingt the image: " + file.getCanonicalPath());
              /*Iterator it = ImageIO.getImageReaders(new FileInputStream(file));
                                           while(it.hasNext()) {
                  System.out.println("can read: " + it.next());
                                           }*/
              //BufferedImage img = ImageIO.read(file);
              setImage(file);
              return true;
            }
          }
          //System.out.println("doing a uri list");
          Object obj = t.getTransferData(urlFlavor);
          //System.out.println("obj = " + obj + " " + obj.getClass().getPackage() + " "
          //        + obj.getClass().getName());
          if (obj instanceof URL) {

            setImage(new File( ( (URL) obj).getFile()));
          }
          return true;
        } catch (Exception ex) {
          System.out.println(ex.getMessage());
          ex.printStackTrace();
          fireError(ex);
        }
      }
      return false;
    }

  }

  private class ImageTransferable
      implements Transferable {
    private Image img;
    private List files;
    private String exportName, exportFormat;
    public ImageTransferable(Image img, String exportName, String exportFormat) {
      this.img = img;
      this.exportName = exportName;
      this.exportFormat = exportFormat;
    }

    public DataFlavor[] getTransferDataFlavors() {
      DataFlavor[] flavors = {
          DataFlavor.imageFlavor,
          DataFlavor.javaFileListFlavor};
      return flavors;
    }

    public boolean isDataFlavorSupported(DataFlavor flavor) {
      if (flavor == DataFlavor.imageFlavor) {
        return true;
      }
      if (flavor == DataFlavor.javaFileListFlavor) {
        return true;
      }
      return false;
    }

    public Object getTransferData(DataFlavor flavor) throws
        UnsupportedFlavorException, IOException {
      //System.out.println("doing get trans data: " + flavor);
      if (flavor == DataFlavor.imageFlavor) {
        return img;
      }
      if (flavor == DataFlavor.javaFileListFlavor) {
        if (files == null) {
          files = new ArrayList();
          File file = File.createTempFile(exportName, "." + exportFormat);
          //System.out.println("writing to: " + file);
          ImageIO.write(PaintUtils.convertToBufferedImage(img), exportFormat,
                        file);
          files.add(file);
        }
        //System.out.println("returning: " + files);
        return files;
      }
      return null;
    }
  }

}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人avav在线| 成人欧美一区二区三区黑人麻豆| 国产午夜精品久久久久久久| 亚洲综合免费观看高清完整版 | 欧美国产欧美亚州国产日韩mv天天看完整| 中文字幕一区在线观看| 精品一区二区在线观看| 欧美人与禽zozo性伦| 国产精品久久免费看| 韩国女主播一区二区三区| 欧美日韩国产另类不卡| 亚洲免费观看视频| 国产成人av电影在线播放| 精品国产1区二区| 日韩电影网1区2区| 欧美亚男人的天堂| 亚洲免费在线观看| 99re在线精品| 亚洲欧洲精品一区二区三区 | 免费看黄色91| 欧美日产在线观看| 亚洲动漫第一页| 欧美日韩在线三区| 一区二区三区波多野结衣在线观看| 国产成人精品一区二区三区四区 | 色老汉一区二区三区| 国产精品久久久久久福利一牛影视| 国内精品伊人久久久久av一坑| 欧美一区二视频| 日本成人在线电影网| 91精品国产综合久久福利| 日韩在线一二三区| 69堂成人精品免费视频| 日韩精品亚洲一区二区三区免费| 欧美精品aⅴ在线视频| 强制捆绑调教一区二区| 欧美大片免费久久精品三p| 久色婷婷小香蕉久久| 欧美变态口味重另类| 国产在线不卡一区| 国产精品久久777777| 97成人超碰视| 亚洲二区在线观看| 欧美xxxxxxxxx| 国产成人av电影在线观看| 中文字幕第一区第二区| 日本黄色一区二区| 日本视频中文字幕一区二区三区| 国产精品素人一区二区| 91一区二区在线| 日韩主播视频在线| 久久久国产一区二区三区四区小说 | 欧美天堂一区二区三区| 久久国产视频网| 亚洲欧洲av色图| 欧美日韩视频在线观看一区二区三区| 爽爽淫人综合网网站| 2024国产精品| 成人国产精品免费观看| 亚洲午夜免费福利视频| 久久夜色精品国产噜噜av | 国产福利一区二区三区视频| 中文字幕在线不卡| 日韩一区二区精品葵司在线| 懂色中文一区二区在线播放| 亚洲一区二区三区四区在线| 26uuu精品一区二区 | 不卡视频免费播放| 日韩和欧美的一区| 自拍偷拍欧美激情| 日韩欧美在线1卡| 91免费小视频| 国产一区二区在线看| 亚洲综合在线视频| 久久久久久免费| 欧美日韩国产另类一区| 成人手机电影网| 奇米一区二区三区av| 亚洲男同性恋视频| 中文字幕亚洲区| 2021国产精品久久精品| 欧美日韩国产不卡| 99久久亚洲一区二区三区青草| 免费不卡在线视频| 亚洲第一综合色| ...xxx性欧美| 久久精品一区蜜桃臀影院| 欧美一区二区三区在线观看| 91婷婷韩国欧美一区二区| 国产美女av一区二区三区| 亚洲成人免费av| 亚洲丝袜美腿综合| 欧美激情一区二区三区在线| 精品乱码亚洲一区二区不卡| 欧美日本一道本| 色系网站成人免费| 成人午夜视频网站| 国产精品一区二区无线| 精品在线免费观看| 另类欧美日韩国产在线| 日韩在线卡一卡二| 天堂久久一区二区三区| 亚洲高清中文字幕| 亚洲国产三级在线| 亚洲国产精品尤物yw在线观看| 中文字幕一区二区三区色视频| 国产欧美精品一区二区色综合朱莉| 日韩欧美在线影院| wwwwxxxxx欧美| 久久久久久久性| 国产欧美日韩麻豆91| 亚洲国产成人私人影院tom| 久久久久久久久岛国免费| 久久精品夜色噜噜亚洲aⅴ| 久久久精品人体av艺术| 国产三级精品视频| 国产精品婷婷午夜在线观看| 中文字幕一区二区三区乱码在线| 国产精品看片你懂得 | 欧美国产一区视频在线观看| 国产精品区一区二区三区| 国产精品久久久久一区二区三区 | 91在线精品一区二区三区| www.激情成人| 欧美午夜寂寞影院| 666欧美在线视频| 精品对白一区国产伦| 久久―日本道色综合久久| 亚洲国产成人一区二区三区| 中文字幕在线一区免费| 一区二区在线免费观看| 亚洲午夜国产一区99re久久| 青青草成人在线观看| 国产一区二区三区久久悠悠色av | 狠狠网亚洲精品| 成人激情av网| 欧美色视频在线| 日韩精品一区二区三区swag | 成人高清在线视频| 欧美亚洲另类激情小说| 日韩三级精品电影久久久 | 一本色道久久综合亚洲aⅴ蜜桃| eeuss鲁一区二区三区| 精品婷婷伊人一区三区三| 欧美videos大乳护士334| 日本一区二区三区四区 | 国产乱码精品1区2区3区| 91日韩一区二区三区| 日韩欧美精品三级| 国产精品久久久久婷婷| 天堂蜜桃91精品| 成+人+亚洲+综合天堂| 正在播放一区二区| 国产精品福利一区二区| 视频一区中文字幕| caoporn国产精品| 精品欧美乱码久久久久久| 亚洲日本在线观看| 国产一区欧美一区| 在线播放国产精品二区一二区四区 | 久久综合久久鬼色| 亚洲第一综合色| 成人黄色小视频| 欧美mv日韩mv亚洲| 亚洲bt欧美bt精品777| 成人激情电影免费在线观看| 日韩欧美国产综合在线一区二区三区| 综合久久久久久| 国产91对白在线观看九色| 日韩午夜在线观看| 亚洲一区二区视频在线| 白白色亚洲国产精品| 久久久久青草大香线综合精品| 亚洲成av人片www| 91美女蜜桃在线| 亚洲免费观看高清在线观看| 国产91丝袜在线观看| 精品久久久久久久一区二区蜜臀| 亚洲成人午夜电影| 在线观看亚洲a| 日韩理论片中文av| 成人成人成人在线视频| 国产欧美日韩另类一区| 国产一区二区三区综合| 日韩欧美国产三级| 日韩制服丝袜先锋影音| 欧美日韩精品免费观看视频| 亚洲综合色网站| 欧美日韩综合不卡| 亚洲高清中文字幕| 欧美精品在线一区二区三区| 亚洲国产综合人成综合网站| 91麻豆123| 亚洲欧美日韩精品久久久久| 99久久国产免费看| 亚洲免费在线看| 欧美在线观看视频一区二区 | 一区二区三区高清| 欧美日韩在线播放三区| 午夜精品久久久久久久|