📄 lcontrol.java
字号:
package classes;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Lcontrol extends JFrame implements ActionListener
{
JButton ok,cancel,help,clear;
JLabel LstartX,LstartY;
JLabel LstartDirection,LdefineRotation;
JLabel LlengthF,Lcount;
JLabel LsStart,LruleNumber;
JLabel Lrule1_1,Lrule1_2;
JLabel Lrule2_1,Lrule2_2;
JLabel Lrule3_1,Lrule3_2;
JLabel Lrule4_1,Lrule4_2;
JLabel Lrule5_1,Lrule5_2;
JLabel Lrule6_1,Lrule6_2;
JTextField TstartX,TstartY;
JTextField TstartDirection,TdefineRotation;
JTextField TlengthF,Tcount;
JTextField TsStart,TruleNumber;
JPanel p_1,p_2,p_3,p_4,p_5,p_6;
JPanel p_7,p_8,p_9,p_10,p_11,p_12,p_13;
JPanel p_14,p_15,p_16,p_17;
JPanel p_1_1,p_1_2;
JPanel p_2_1,p_2_2;
JPanel p_3_1,p_3_2;
JPanel p_4_1,p_4_2;
Container con;
int i,j;
JTextField rule[][];
Lsystem localSystem;
Lcontrol(Lsystem lsystem,String s)
{
super(s);
localSystem=lsystem;
con=getContentPane();
con.setLayout(new GridLayout(17,1));
LstartX=new JLabel("起始坐标X");
LstartY=new JLabel("起始坐标Y");
LstartDirection=new JLabel("起始方向角");
LdefineRotation=new JLabel("给定的转角");
LlengthF=new JLabel("每步的步长");
Lcount=new JLabel("迭代的次数");
LruleNumber=new JLabel(" 规则个数");
LsStart=new JLabel(" 公理");
Lrule1_1=new JLabel("规则一");
Lrule1_2=new JLabel("规则一");
Lrule2_1=new JLabel("规则二");
Lrule2_2=new JLabel("规则二");
Lrule3_1=new JLabel("规则三");
Lrule3_2=new JLabel("规则三");
Lrule4_1=new JLabel("规则四");
Lrule4_2=new JLabel("规则四");
Lrule5_1=new JLabel("规则五");
Lrule5_2=new JLabel("规则五");
Lrule6_1=new JLabel("规则六");
Lrule6_2=new JLabel("规则六");
TstartX=new JTextField(6);
TstartY=new JTextField(6);
TstartDirection=new JTextField(6);
TdefineRotation=new JTextField(6);
TlengthF=new JTextField(6);
Tcount=new JTextField(6);
TsStart=new JTextField(6);
TruleNumber=new JTextField(6);
//初始化规则
rule=new JTextField[6][2];
for(i=0;i<6;i++)
for(j=0;j<2;j++)
rule[i][j]=new JTextField(30);
//初始化面板并设置其布局
p_1=new JPanel();
p_1_1=new JPanel();
p_1_2=new JPanel();
p_1.setLayout(new GridLayout(1,2));
p_2=new JPanel();
p_2_1=new JPanel();
p_2_2=new JPanel();
p_2.setLayout(new GridLayout(1,2));
p_3=new JPanel();
p_3_1=new JPanel();
p_3_2=new JPanel();
p_3.setLayout(new GridLayout(1,2));
p_4=new JPanel();
p_4_1=new JPanel();
p_4_2=new JPanel();
p_4.setLayout(new GridLayout(1,2));
p_5=new JPanel();
p_6=new JPanel();
p_7=new JPanel();
p_8=new JPanel();
p_9=new JPanel();
p_10=new JPanel();
p_11=new JPanel();
p_12=new JPanel();
p_13=new JPanel();
p_14=new JPanel();
p_15=new JPanel();
p_16=new JPanel();
p_17=new JPanel();
p_17.setLayout(new GridLayout(1,9));
ok=new JButton("确定");
cancel=new JButton("取消");
help=new JButton("帮助");
clear=new JButton("清空");
//添加控件到各面板中
p_1_1.add(LstartX);
p_1_1.add(TstartX);
p_1_2.add(LstartY);
p_1_2.add(TstartY);
p_1.add(p_1_1);
p_1.add(p_1_2);
p_2_1.add(LstartDirection);
p_2_1.add(TstartDirection);
p_2_2.add(LdefineRotation);
p_2_2.add(TdefineRotation);
p_2.add(p_2_1);
p_2.add(p_2_2);
p_3_1.add(LlengthF);
p_3_1.add(TlengthF);
p_3_2.add(Lcount);
p_3_2.add(Tcount);
p_3.add(p_3_1);
p_3.add(p_3_2);
p_4_1.add(LruleNumber);
p_4_1.add(TruleNumber);
p_4_2.add(LsStart);
p_4_2.add(TsStart);
p_4.add(p_4_1);
p_4.add(p_4_2);
p_5.add(Lrule1_1);
p_5.add(rule[0][0]);
p_6.add(Lrule1_2);
p_6.add(rule[0][1]);
p_7.add(Lrule2_1);
p_7.add(rule[1][0]);
p_8.add(Lrule2_2);
p_8.add(rule[1][1]);
p_9.add(Lrule3_1);
p_9.add(rule[2][0]);
p_10.add(Lrule3_2);
p_10.add(rule[2][1]);
p_11.add(Lrule4_1);
p_11.add(rule[3][0]);
p_12.add(Lrule4_2);
p_12.add(rule[3][1]);
p_13.add(Lrule5_1);
p_13.add(rule[4][0]);
p_14.add(Lrule5_2);
p_14.add(rule[4][1]);
p_15.add(Lrule6_1);
p_15.add(rule[5][0]);
p_16.add(Lrule6_2);
p_16.add(rule[5][1]);
p_17.add(new Label());
p_17.add(ok);
p_17.add(new Label());
p_17.add(cancel);
p_17.add(new Label());
p_17.add(clear);
p_17.add(new Label());
p_17.add(help);
p_17.add(new Label());
//初始化显示各控件的值
for(i=0;i<localSystem.ruleNumber;i++)
for(j=0;j<2;j++)
rule[i][j].setText(localSystem.sRule[i][j]);
TstartX.setText(String.valueOf(localSystem.startX));
TstartY.setText(String.valueOf(localSystem.startY));
TstartDirection.setText(String.valueOf(localSystem.initDirection));
TdefineRotation.setText(String.valueOf(localSystem.rotation));
TlengthF.setText(String.valueOf(localSystem.lengthF));
Tcount.setText(String.valueOf(localSystem.startDepth));
TruleNumber.setText(String.valueOf(localSystem.ruleNumber));
TsStart.setText(localSystem.sStart);
//将各面板加入内容面板
con.add(p_1);
con.add(p_2);
con.add(p_3);
con.add(p_4);
con.add(p_5);
con.add(p_6);
con.add(p_7);
con.add(p_8);
con.add(p_9);
con.add(p_10);
con.add(p_11);
con.add(p_12);
con.add(p_13);
con.add(p_14);
con.add(p_15);
con.add(p_16);
con.add(p_17);
ok.addActionListener(this);
cancel.addActionListener(this);
clear.addActionListener(this);
help.addActionListener(this);
addWindowListener(new WindowAdapter()//添加窗体监听(既是:窗体右上角的关闭按钮)
{
public void windowClosing(WindowEvent e)
{setVisible(false);}
});
setSize(360,420);
setBackground(Color.lightGray);
Dimension d=Toolkit.getDefaultToolkit().getScreenSize();
this.setLocation((d.width-this.getSize().width)/2,(d.height-this.getSize().height)/2);
setVisible(true);
pack();
}
public void actionPerformed(ActionEvent ae)
{
//将所得的参数返回到主窗体
if(ae.getSource()==ok)
{
localSystem.startX=Integer.parseInt(TstartX.getText().trim());
localSystem.startY=Integer.parseInt(TstartY.getText().trim());
localSystem.initDirection=Double.valueOf(TstartDirection.getText().trim()).doubleValue();
localSystem.rotation=Double.valueOf(TdefineRotation.getText().trim()).doubleValue();
localSystem.lengthF=Double.valueOf(TlengthF.getText().trim()).doubleValue();
localSystem.startDepth=Integer.parseInt(Tcount.getText().trim());
localSystem.sStart=TsStart.getText().trim();
localSystem.ruleNumber=Integer.parseInt(TruleNumber.getText().trim());
for(i=0;i<Integer.parseInt(TruleNumber.getText().trim());i++)
for(j=0;j<2;j++)
{
localSystem.sRule[i][j]=rule[i][j].getText().trim();
}
setVisible(false);
}
//参数不返回,只是隐藏该窗口
if(ae.getSource()==cancel)
setVisible(false);
//将各控件清空
if(ae.getSource()==clear)
{
TstartX.setText("");
TstartY.setText("");
TstartDirection.setText("");
TdefineRotation.setText("");
TlengthF.setText("");
Tcount.setText("");
TsStart.setText("");
TruleNumber.setText("");
for(i=0;i<6;i++)
for(j=0;j<2;j++)
rule[i][j].setText("");
}
//获取帮助窗口
if(ae.getSource()==help)
{
LAboutChar lac=new LAboutChar("L系统字符说明");
lac.setVisible(true);
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -