⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lcontrol.java

📁 植物仿真
💻 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 + -