📄 main_frame.java
字号:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.util.*;
public class Main_Frame extends JFrame implements ActionListener, Observer{
JButton butt1=new JButton("启动GP");
JButton butt2=new JButton("停止GP");
JButton butt3=new JButton("最小二乘法");
JButton butt5=new JButton("设置最小二乘法阶数");
JButton butt4=new JButton("设置参数");
Min_Polynomial_Way math;
Config cf=new Config();//Config是JDIALOG
Math_Dialog dl=new Math_Dialog();
Container c;
JTextArea a1=new JTextArea();
JTextArea a2=new JTextArea();
public Main_Frame()
{
cf.pack();
cf.setLocation(200,200);
cf.setModal(true);
butt1.setActionCommand("1");
butt2.setActionCommand("2");
butt3.setActionCommand("3");
butt4.setActionCommand("4");
butt5.setActionCommand("5");
butt1.addActionListener(this);
butt2.addActionListener(this);
butt3.addActionListener(this);
butt4.addActionListener(this);
butt5.addActionListener(this);
}
public static void main(String[]args)
{
Main_Frame f2=new Main_Frame();
f2.cf.xy_axis.setBackground(Color.white);
JPanel p=new JPanel();
p.setLayout(new GridLayout(1,2));
p.add(f2.cf.xy_axis,BorderLayout.CENTER);
//p.add(ptemp);
JPanel p2=new JPanel();
p2.setLayout(new GridLayout(3,1));
JPanel p3=new JPanel();
p3.setLayout(new GridLayout(6,1));
p3.add(f2.cf.c3);
p3.add(f2.butt1);
p3.add(f2.butt2);
p3.add(f2.butt3);
p3.add(f2.butt5);
p3.add(f2.butt4);
p2.add(p3);
JPanel p4=new JPanel();
p4.setLayout(new BorderLayout());
p4.add(new JLabel("最佳个体"),BorderLayout.NORTH);
p4.add(new JScrollPane(f2.a1));
p2.add(p4);
JPanel p5=new JPanel();
p5.setLayout(new BorderLayout());
p5.add(new JLabel("函数表达式 "),BorderLayout.NORTH);
p5.add(new JScrollPane(f2.a2));
p2.add(p5);
p.add(p2);
JPanel p6=new JPanel();
Container cp2=f2.getContentPane();
cp2.add(p);
f2.cf.xy_axis.setTrace(0,((f2.cf.gp).fitnessCases).data);
f2.setLocation(100,200);
f2.setSize(850,500);
f2.show();
}
public void actionPerformed(ActionEvent e)
{
if(e.getActionCommand().equals("1"))
{
butt1.setEnabled(false);
butt3.setEnabled(false);
butt4.setEnabled(false);
butt5.setEnabled(false);
cf.c3.setEnabled(false);
cf.gp.addObserver(this);//必须在这里注册,否则注册观察者是根据对象,而非引用的
cf.gp.start();
}
else if(e.getActionCommand().equals("2"))
{
butt1.setEnabled(true);
butt3.setEnabled(true);
butt4.setEnabled(true);
butt5.setEnabled(true);
cf.c3.setEnabled(true);
cf.gp.thread.stop();
}
else if(e.getActionCommand().equals("3"))
{
RealPoint []p=Original_Function_Point_Set.read(cf.rawText);
math=new Min_Polynomial_Way(p,dl.exp);
p=math.Processing();
String s=math.Expression;
cf.xy_axis.setTrace(2,p);
a2.setText(s);
}
else if(e.getActionCommand().equals("4"))
{
cf.setVisible(true);
}
else if(e.getActionCommand().equals("5"))
{
dl.setVisible(true);
}
}
public void update(Observable object, Object argument) {
if(argument instanceof Best_Tree)
{ Best_Tree winner=(Best_Tree)argument;
/* for(int i=0;i<winner.data.length;i++)
{
System.out.println(winner.data[i].x+""+winner.data[i].y);
}*/
cf.xy_axis.setTrace(1,winner.data);
a1.setText("目前GP发现的最佳个体是\n" +
"代数:" +
winner.GenerationNumber + ".\n" +
"它的调整适应值为: " + winner.tree.standardizedFitness);
a2.setText("其函数表达式为::\n\n" +
winner.tree.program.toString(0));
}
else if(argument instanceof GP_State)
{
int temp=((GP_State)argument).getState();
switch(temp)
{
case 0:break;
case 1:break;
case 2:
{
butt1.setEnabled(true);
butt3.setEnabled(true);
butt4.setEnabled(true);
break;}
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -