16. 26. 3. 원하는 크기의 그림 로드 Image and scale it

import javax.swing.JFrame;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.awt.Image;
import javax.swing.JButton;
import javax.swing.JPanel;
import java.awt.Graphics;
import java.awt.BorderLayout;
import javax.swing.JFileChooser;
import java.io.File;
import javax.swing.filechooser.FileFilter;
import java.awt.Toolkit;

/**
*  :      ,     
*   eclipse,   EditPlus   ,  ....
*      ,     ,         ,     ....
*/
public class ImageFileFilterImageScale extends JFrame implements ActionListener{
	Image img;//    ,    ,        ?
	JButton getPictureButton = new JButton("    ");

	public ImageFileFilterImageScale(){
		this.setSize(300,300);
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

		//          
		JPanel picPanel = new PicturePanel();//   ?     paint    
		this.add(picPanel,BorderLayout.CENTER);

		JPanel buttonPanel = new JPanel();
		getPictureButton.addActionListener(this);
		buttonPanel.add(getPictureButton);
		this.add(buttonPanel,BorderLayout.SOUTH);
		this.setVisible(true);
	}

	class PicturePanel extends JPanel{
		public void paint(Graphics g){//         !
			g.drawImage(img,0,0,this);
		}
	}

	public void actionPerformed(ActionEvent e){
		String file = getImageFile();//          ,   
		if(file != null){//    ,      
			//Toolkit:   ,    ,       ,        !
			Toolkit kit = Toolkit.getDefaultToolkit();
			img = kit.getImage(file);//           

			/**getScaleInstance()           。
			* 300,   ,-1   ?   :
			*   width   height    ,                  。
			*   width   height    ,         。 
			*scale_smooth                           。
			*/
			img = img.getScaledInstance(300,-1,Image.SCALE_SMOOTH);
			this.repaint();
		}
	}

	private String getImageFile(){
		JFileChooser fc = new JFileChooser();//         
		fc.setFileFilter(new ImageFilter());//      ,        
		int result = fc.showOpenDialog(null);
		File file = null;//         
		if(result == JFileChooser.APPROVE_OPTION){
			file = fc.getSelectedFile();//     ,  file    
			return file.getPath();
		}else{
			return null;
		}
	}

	public static void main(String[] args) {
		new ImageFileFilterImageScale();
	}
}

class ImageFilter extends FileFilter{////   ImageFilter(),            
	public boolean accept(File f){
		if(f.isDirectory()){//   ,  true
			return true;
		}
		String name = f.getName();
		if(name.matches(".*((.jpg)|(.gif)|(.png))")){
			return true;
		}else{
			return false;
		}
	}

	public String getDescription(){
		return "    (*.jpg,*.gif,*.png)";
	}
}

좋은 웹페이지 즐겨찾기