2000年6月28日更新(新規作成)
  関谷トップページへ CGトップページへ   CG No.10ページへ   アプレットGraphicsF5t.htmlページへ  

GraphicsF5t.java 画像の拡大縮小(中山茂、Java2グラフィックスプログラミング入門,pp.170-172)アプレット版

// GraphicsF5t.java 画像の拡大縮小(中山茂、Java2グラフィックスプログラミング入門,pp.170-172)
// title,file 名の表示を追加した。2000.6.15 KPC sekiya
//  2000.6.28 Appletへの変更( IE5.0では、FileDialogが動作しないので、予め読み込んでいる)
import java.awt.*;
import java.awt.event.*;
import java.awt.image.*;
import java.applet.*;			//  1 add

public class GraphicsF5t extends Applet implements  ActionListener, ItemListener {		//  2 chg(Applet <- Frame)
  Image img;
  int wpg,hpg;
  Choice ch;
  double imgMag=1.0;
	String fname = "Campas3.jpg";		// 4-0 for display =fd.getDirectory()+fd.getFile();
	Button butt;			// 4-1 ボタン from MenuBar

  
/*  public static void main(String ar[]) {		// 3 comment
    Frame f=new GraphicsF5();
    f.setTitle("画像の拡大縮小)");
    f.setSize(new Dimension(800,800));
    f.show();
  } */
  
  public void init(){ 		// 5 chg (public void init() <- GraphicsF5())

/*    MenuBar mb=new MenuBar();			// 6 chg (Bottun <- MenuBar)
    Menu m=new Menu("Image File"); 
    MenuItem mi=new MenuItem("Open FileDialogBox");
    mi.addActionListener(this);    m.add(mi);
    mb.add(m);
    setMenuBar(mb); */
    
//    setLayout(new BorderLayout());    //   
	butt = new Button("画像ファイル入力");		// 4-2 ボタン
	add(butt);
	butt.addActionListener(this);		// イベント

    ch=new Choice();
      ch.add(" 1倍 ");
      ch.add(" 2倍拡大 ");
      ch.add(" 5倍拡大 ");
      ch.add(" 1/2倍縮小 ");
      ch.add(" 1/5倍縮小 ");
//    add("North",ch);				//  7 chg
    add(ch); 

    ch.addItemListener(this);
//    addWindowListener(new WinAdapter());	// 8 delete

	img = getImage(getDocumentBase(), fname);	// 4-4 for IE5.0  

  }
/*  class WinAdapter extends WindowAdapter {	// 9 delete
    public void windowClosing(WindowEvent e){ System.exit(0); }
  } */
  public void paint(Graphics g) {
     if(img!=null) { 
       int w=img.getWidth(this), h=img.getHeight(this);
       g.drawImage(img, 0, 80+getInsets().top, (int)(w*imgMag), (int)(h*imgMag),this);

		g.setFont(new Font("Serif",Font.PLAIN,15));		// display file_name 
		g.setColor(Color.red);
		g.drawString("GraphicsF5t.java 画像の拡大縮小(中山茂、Java2グラフィックスプログラミング入門,pp.170-172)", 20,50);	// 90);
		g.drawString("(アプレット版)File name : " + fname, 20,70);	// 110);

    }
  }
  public void actionPerformed(ActionEvent ae) {
/*    MenuItem mi=(MenuItem)ae.getSource();		// 10 delete
    String ml=mi.getLabel();
    if(ml.equals("Open FileDialogBox")){ 	*/

	if (ae.getSource() == butt) { 			// 4-3 add for  button

       FileDialog fd=new FileDialog(new Frame(), "画像ファイル選択");
       fd.show();
//       String fname=fd.getDirectory()+fd.getFile();
//			fname=fd.getDirectory()+fd.getFile();
			fname = fd.getFile();
//			if(fname!=null)  img=getToolkit().getImage(fname); // 11 chg	

			if(fname!=null)  {
				img=getImage(getDocumentBase(), fname);
			}
       fd.dispose();
       repaint();
    }
  }
  public void itemStateChanged(ItemEvent ie) {
    int imageMag=ch.getSelectedIndex();
    if(imageMag==0)      imgMag=1.0;
    else if(imageMag==1) imgMag=2.0;
    else if(imageMag==2) imgMag=5.0;
    else if(imageMag==3) imgMag=0.5;
    else if(imageMag==4) imgMag=0.2;
    else imgMag=1.0;
    repaint();
  }
}