IT_Programming/Java

image view (이미지 여러 방향으로 뒤집기)

JJun ™ 2008. 8. 20. 08:43

 

 

 

 


import java.awt.*;
import java.awt.image.*;
import java.awt.event.*;
import java.io.File;

import javax.swing.JOptionPane;

public class ImgViewer extends Frame implements ActionListener {
Image curImg;
Panel p;
Button b0, b1, b2, b3;
Dimension d;
int command;
static final int SHOW_NORM = 0;
static final int SHOW_HORIZONTAL = 1;
static final int SHOW_VERTICAL = 2;
ImgViewer(String s) {
  super(s + " 파일 보기");
  addWindowListener(new WindowAdapter() {
   public void windowClosing(WindowEvent e) {
    dispose();
    System.exit(0);
   }
  });

  // curImg = Toolkit.getDefaultToolkit().getImage(s);
  command = SHOW_NORM;
  setLayout(new BorderLayout());
  p = new Panel();
  p.add(b0 = new Button("File Open")); // 파일 오픈 Button 추가
  p.add(b1 = new Button("정상 그림"));
  p.add(b2 = new Button("좌우뒤집기"));
  p.add(b3 = new Button("위아래뒤집기"));
  add(p, BorderLayout.SOUTH);
  b0.addActionListener(this); // 해당 Button 에 ActionListener을 설정 한다.
  b1.addActionListener(this);
  b2.addActionListener(this);
  b3.addActionListener(this);
  setSize(700,300);
  setVisible(true);
  d = p.getSize();
}

public void actionPerformed(ActionEvent e) {
  Button b = (Button) e.getSource();
  if (e.getSource() == b0) { // File Open Button 이 눌렸을 경우 처리...
   openImage();
   return;
  } else if (b.getLabel().equals("정상 그림")) {
   command = SHOW_NORM;
  } else if (b.getLabel().equals("좌우뒤집기")) {
   command = SHOW_HORIZONTAL;
  } else if (b.getLabel().equals("위아래뒤집기")) {
   command = SHOW_VERTICAL;
  }
  reDraw(command);
}

// File Open Button 이 눌렸을 경우 호출 된다.
public void openImage() {
  FileDialog fd = new FileDialog(this, "File Open");
  fd.show();
  String img = fd.getDirectory() + fd.getFile();

  if (isOpen(img)) {
   curImg = Toolkit.getDefaultToolkit().getImage(
     fd.getDirectory() + fd.getFile());

  } else {
   JOptionPane jp = new JOptionPane("Message Box",
     JOptionPane.ERROR_MESSAGE);
   jp.showMessageDialog(this,"This is file not Image!!  \nPlease !! Selected Image File ");
  }
}

// 선택된 File이 이미지 File인지를 비교 true , false 를 Return
public boolean isOpen(String img) {
  String[] extension = { "bmp", "jpg", "jpeg", "gif" };
  for (int i = 0; i < extension.length; i++) {
   if (img.toLowerCase().endsWith("." + extension[i])) {
    return true;
   }
  }
  return false;
}

public void paint(Graphics g) {
  if (curImg == null)
   return;

  int w = curImg.getWidth(this);
  int h = curImg.getHeight(this);


  switch (command) {
  case SHOW_NORM:
   g.drawImage(curImg, 5, d.height + 5, this);
//  setSize(curImg.getWidth(this),curImg.getHeight(this)); 이건 필요 없음
//  setSize(w,h+100);

   break;
  case SHOW_HORIZONTAL:
  g.drawImage(curImg, 0, 0+33+5, d.width, d.height+h+5, w, 0, w-d.width, h, this);
//  setSize(w,h+100);
   break;
  case SHOW_VERTICAL:
   g.drawImage(curImg, 0, 0+33+5, d.width, d.height+h+5, w, h, w-d.width, 0, this);
//setSize(w,h+100);
   break;
  }

  setSize(w,h+100);//여기에 한번
}

public void reDraw(int command) {
  this.command = command;
  repaint();
}

public static void main(String args[]) {
  ImgViewer iv = new ImgViewer("ImageViewer");
}
}

'IT_Programming > Java' 카테고리의 다른 글

JDialog Example   (0) 2008.08.20
JPopupMenu Example   (0) 2008.08.20
java HTML Parsing & ParserCallback   (0) 2008.08.20
다중파일 전송   (0) 2008.08.20
자바 그림 불러오기   (0) 2008.08.20