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();
}
}