// ジュリア集合 [Julia.java] import java.applet.Applet; import java.awt.*; import java.awt.event.*; // JDK 1.1 public class Julia extends Applet implements ActionListener,ItemListener { // JDK 1.1 Choice sChoice; // チョイス TextField arTXT,aiTXT; // 入力エリア Button button_rw; // ボタン double rs,re,is,ie,aR,aI; Color [] C={Color.red,Color.pink,Color.magenta, Color.blue,Color.cyan,Color.green, Color.yellow,Color.gray}; int colorLen=C.length; // 色の数 int n=100; // 最大繰り返し回数 public void init() { // ロード時の初期化メソッド rs=-1.0; re=1.0; //(a) 範囲の初期値 is=-1.0; ie=1.0; //(a) 範囲の初期値 aR=0.5; aI=0.5; //(b) Aの初期値 sChoice = new Choice(); // チョイス for (float d=1.0f; d>=0.2f; d-=0.2f) { // 作画範囲の設定 String str=(d+" ").substring(0,3); sChoice.addItem("-"+str+","+str); } button_rw=new Button("GO"); // Re-writeボタン add(button_rw); // Re-writeボタン arTXT = new TextField("0.5",3); // 入力フィールド aiTXT = new TextField("0.5",3); // 入力フィールド add(arTXT); // 入力フィールド add(aiTXT); // 入力フィールド add(new Label("A")); // ラベル add(sChoice); // チョイス add(new Label("Range")); // ラベル button_rw.addActionListener(this); // JDK 1.1 sChoice.addItemListener(this); // JDK 1.1 arTXT.addActionListener(this); // JDK 1.1 aiTXT.addActionListener(this); // JDK 1.1 } //end init //============ JDK 1.1 イベント処理(ボタン) ============ public void actionPerformed(ActionEvent e) { String str; if (e.getSource() == button_rw) { // GOボタン str=arTXT.getText().trim(); //(c) 実部の値 aR=new Double(str).doubleValue(); str=aiTXT.getText().trim(); //(c) 虚部の値 aI=new Double(str).doubleValue(); repaint(); } //end if } //end actionPerformed //=========== JDK 1.1 イベント処理(チョイス) =========== public void itemStateChanged(ItemEvent e) { if (e.getSource() == sChoice) { re=ie=1.0-sChoice.getSelectedIndex()*0.2; rs=is=-re; } //end if } //end itemStateChanged //================ グラフィックスの表示 ================ public void paint( Graphics g ) { int width,height; double r,i,zR,zI,rd,id; width =getSize().width; // 横の長さ height=getSize().height-30; // 縦の長さ g.setColor(Color.black); // 色の設定 g.fillRect(0,30,width,height); // 黒で塗り潰す rd=(re-rs)/width; //(d) 実部の増分 id=(ie-is)/height; //(d) 虚部の増分 for (int rr=0; rr 4.0) { //(g) 値の判定 g.setColor(C[L%colorLen]); // 色の設定 g.drawLine(rr,ii+30,rr,ii+30); break; } r=zR; i=zI; } } //ii } //rr } //end paint } //end Julia