マンデルブローを図を描くプログラムなのですが、ボタンを押すたびにcountがカウントアップされ
それに従って、wwの値が巡回的に、0.0、1.0、2.0、3.0、0.0、1.0、... なるようにして、その値で
マンデルブロー図を書くプログラムみたいなのですが、
2つのメソッドactionPerformedとmainの中を完成させたいのですが、
一応mainの中身はコンパイルすると表示されるので出来たと思うのですが、
actionPerformedのボタンの処理をどう記述したらいいのかわかりません。
どなたか教えてください。
以下にプログラムを記述します。
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
class Mandel extends JPanel implements ActionListener{
double ww = 0.0; int count = 0;
int myHeight = 400, myWidth = 400;
JButton b; JLabel valww;
Mandel(){
setPreferredSize(new Dimension(myHeight, myWidth));
b = new JButton("scale"); valww = new JLabel("ww=0.0");
add(b); add(valww);
b.addActionListener(this);
}
public void paintComponent(Graphics g){
super.paintComponent(g);
int istart =-myWidth/2, istop = myWidth/2;
Color [] col ={
Color.green,Color.cyan, Color.black, Color.red,
Color.blue,Color.white, Color.gray,Color.yellow,
Color.lightGray,Color.pink,Color.darkGray,Color.magenta };
double ox=-1.1, oy=0.0;
double zr,zi, cr, ci, tr, ti;
int i, j, k;
for (i=istart; i<=istop; i++){
for (j=-myHeight/2+50; j<=myHeight/2; j++){
zr=0.0; zi=0.0;
cr=ww*i/1000.0+ox; ci=ww*j/900.0+oy;
for (k=1; k<100; k++){
tr=zr*zr-zi*zi; ti=2*zr*zi; zr=tr+cr; zi=ti+ci;
if (zr*zr+zi*zi >=20000.0) break;
}
g.setColor(col[k%12]);
g.drawLine(i+myWidth/2,j+myHeight/2,i+myWidth/2,j+myHeight/2);
}
}
}
//ここのactionPerformedの記述がわかりません。
public void actionPerformed(ActionEvent e){
if(e.getSource()==b){
repaint();
}
}
//コンパイルすると表示されるので、ここは出来たと思うのですが。
public static void main(String args[]){
JFrame f = new JFrame();
Mandel m = new Mandel();
f.getContentPane().add(m,BorderLayout.CENTER);
f.pack();
f.setVisible(true);
}