www.pudn.com > java_celluar.zip > CelluarControl.java
package celluar;
import java.awt.event.*;
import java.awt.*;
/**
* Title: Game of Life
* Description:
* Copyright: Copyright (c) 2003
* Company: Http://agents.yeah.net
* @author Keats
* @version 1.0
*/
final class CelluarControl extends Frame {
celluar localcell;//主程序的本地拷贝,以便可以更新主程序中的值
Label labelSize = new Label();
TextField txtSize = new TextField();
Label labelPer = new Label();
TextField txtPer = new TextField();
Label label1 = new Label();
Label label2 = new Label();
Label labelRefreshSteps = new Label();
TextField txtRefreshSteps = new TextField();
Label label3 = new Label();
Button btnConfirm = new Button();
Button btnCancel = new Button();
Button btnDefault = new Button();
Label label4 = new Label();
public CelluarControl(celluar cl) {
super("参数设置");
localcell=cl;
try {
jbInit();
}
catch(Exception e) {
e.printStackTrace();
}
}
private void jbInit() throws Exception {
this.setBackground(Color.white);
this.setLayout(null);
this.setBounds(0,0,300,300);
this.addWindowListener(new java.awt.event.WindowAdapter() {
public void windowClosing(WindowEvent e) {
this_windowClosing(e);
}
});
txtSize.setText("100");
txtSize.setBounds(new Rectangle(102, 44, 53, 19));
labelSize.setText("世界的大小:");
labelSize.setBounds(new Rectangle(20, 44, 73, 22));
labelPer.setText("个体数量占世界的比例:");
labelPer.setBounds(new Rectangle(20, 92, 134, 18));
txtPer.setText("0.08");
txtPer.setBounds(new Rectangle(161, 93, 56, 18));
label1.setText("(最大尺寸150,取值越大运行速度越慢)");
label1.setBounds(new Rectangle(28, 67, 228, 20));
label2.setText("(取值范围(0,1))");
label2.setBounds(new Rectangle(27, 113, 140, 18));
labelRefreshSteps.setText("刷新的频率:");
labelRefreshSteps.setBounds(new Rectangle(18, 135, 79, 20));
txtRefreshSteps.setText("1");
txtRefreshSteps.setBounds(new Rectangle(98, 134, 61, 20));
label3.setText("(每演化几步刷新一次)");
label3.setBounds(new Rectangle(26, 159, 133, 22));
btnConfirm.setLabel("确定");
btnConfirm.setBounds(new Rectangle(18, 190, 59, 21));
btnConfirm.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(ActionEvent e) {
btnConfirm_actionPerformed(e);
}
});
btnCancel.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(ActionEvent e) {
btnCancel_actionPerformed(e);
}
});
btnCancel.setBounds(new Rectangle(92, 190, 59, 21));
btnCancel.setLabel("取消");
btnDefault.setLabel("默认值");
btnDefault.setBounds(new Rectangle(165, 190, 72, 21));
btnDefault.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(ActionEvent e) {
btnDefault_actionPerformed(e);
}
});
label4.setText("keatskk@sina.com");
label4.setBounds(new Rectangle(59, 220, 152, 20));
this.add(labelSize, null);
this.add(label1, null);
this.add(labelPer, null);
this.add(labelRefreshSteps, null);
this.add(label2, null);
this.add(label3, null);
this.add(btnConfirm, null);
this.add(txtRefreshSteps, null);
this.add(txtSize, null);
this.add(txtPer, null);
this.add(btnCancel, null);
this.add(btnDefault, null);
this.add(label4, null);
reset();
}
public void reset(){
//设置所有文本框中的数值为初始值
txtSize.setText(Integer.toString(localcell.size));
txtPer.setText(Double.toString(localcell.per));
txtRefreshSteps.setText(Integer.toString(localcell.refreshSteps));
}
void btnConfirm_actionPerformed(ActionEvent e) {
//用文本框中的参数数值更新主程序中的响应参数
localcell.size=Integer.parseInt(txtSize.getText());
if (localcell.size<=0) return;
localcell.per=Double.valueOf(txtPer.getText()).doubleValue();
if (localcell.per<=0||localcell.per>=1) return;
localcell.refreshSteps=Integer.parseInt(txtRefreshSteps.getText());
if (localcell.refreshSteps<1) return;
localcell.reinit();
localcell.running=true;
localcell.pausebutton.setLabel("Stop");
this.hide();
this.dispose();
}
void btnCancel_actionPerformed(ActionEvent e) {
localcell.running=true;
localcell.pausebutton.setLabel("Stop");
this.hide();
this.dispose();
}
void btnDefault_actionPerformed(ActionEvent e) {
txtSize.setText("50");
txtPer.setText("0.1");
txtRefreshSteps.setText("1");
}
void this_windowClosing(WindowEvent e) {
localcell.running=true;
localcell.pausebutton.setLabel("Stop");
this.hide();
this.dispose();
}
}