画像を表示するアプレットです。
ボタンをクリックすると、二つの画像を交互に変換して、表示するプログラムを作りたいのですが、よく出来ません。
どうすれば、画像を変換できますか?また、「この部分はこうした方がいい」という部分があれば教えてください。
どうか、よろしくお願いします。
(スペースが表示されない・・・(^^ゞ)


***********************************************ImageDemo.java*********
import java.awt.*;
import java.applet.*;
import java.awt.event.*;

//<applet code=ImageDemo.class width=470 height=623></applet>

public class ImageDemo extends Applet{
View view;
Image image,image2;
Panel panel_left,panel_right;
Button buttonChange;
boolean flag;

public void init(){
flag = true;
image = getImage(getDocumentBase(),"nagasaku.jpg");
image2 = getImage(getDocumentBase(),"kawamura.jpg");

view = new View(image);

buttonChange = new Button("Button Change");
buttonChange.addActionListener(new myActionListener());

add(view);
add(buttonChange);
}
class myActionListener implements ActionListener{
public void actionPerformed(ActionEvent ae){
Object obj = ae.getSource();
if(obj == buttonChange){
if(flag){
view = new View(image2);
flag = false;
}
if(!flag){
view = new View(image);
flag = true;
}
}
}
}
}
////////////////////////////////////////////////
class View extends Canvas{
Image image;
View(Image image){
this.image = image;
setSize(358,623);
}

public void paint(Graphics g){
g.drawImage(image,0,0,358,623,this);
}
}

このQ&Aに関連する最新のQ&A

A 回答 (1件)

とりあえず、軽ーく見た感じだけですが、



ボタン押下時に新しいViewオブジェクトのインスタンスを生成していますけど、そのインスタンスをアプレットのコンテナに追加してない気がしますが。
そのまえに現在のViewオブジェクトをコンテナから削除しないといけないですね。

Canvasを拡張したクラスを作ってインスタンスたくさん作るより、裏画面として画像2つ描画済みのCanvasを保持してそこからAppletにあるCanvasに書き直した方が楽な気がします。

あと、Panelの変数二つ使っていない気がするのは気のせいですかね(^^;
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


人気Q&Aランキング