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

📄 applet1.java

📁 学习数据结构的最好辅助工具,快速帮助你熟悉数据结构的相关技术
💻 JAVA
字号:
import java.awt.*;
import java.awt .event .*;

			   
import java.applet.*;
import Demo;
import GoThread;

/**
 * This class reads PARAM tags from its HTML host page and sets
 * the color and label properties of the applet. Program execution
 * begins with the init() method. 
 */
public class Applet1 extends Applet implements ActionListener,ItemListener
{
	private String sourceCode1[]={
		"void InsertionSort ( Elem R[], int n) ",				//0
		"{                      ",								//1
		"   for (i=2; i<=n; ++i)       ",						//2
		"   { ",												//3
		"       R[0] = R[i];           ",						//4
		"       for(j=i-1;R[0].key < R[j].key;--j)",			//5
		"          R[j+1] = R[j];      ",						//6
		"       R[j+1] = R[0];         ",						//7
		"    }",												//8
		"}                "										//9
		};
	
	private String sourceCode2[]={
		"void InsertionSort ( Elem R[], int n) ",				//0
		"{                      ",								//1
		"   for (i=2; i<=n; ++i)       ",						//2
		"   { ",												//3
		"       R[0] = R[i];           ",						//4
		"       for(j=i-1;R[0].key > R[j].key;--j)",			//5
		"          R[j+1] = R[j];      ",						//6
		"       R[j+1] = R[0];         ",						//7
		"    }",												//8
		"}                "										//9
		};

	
	public  boolean m_bSortType=true;								//true--正序,false-逆序
	public  boolean m_bPaused=true;
	
	private String  m_sDefault = "XADFSEFGHY";
	private String  m_sData;
	
	
	public  Demo m_Demo;	
	
	private GridBagLayout		m_gbLayout;
	private GridBagConstraints	m_gbConstraints;
	
	private TextArea m_taSource;
	public  Button  m_btnNext,m_btnReset,m_btnGo;
	public  TextField m_tfData;
	
	public  Checkbox m_radio1;
	public  Checkbox m_radio2;		
	public  CheckboxGroup m_Group=new CheckboxGroup();
	private Label    m_lbData;
	private Label    m_lbSortType;
	
	private GoThread m_Go;
	
	
	
	
	public int      m_iStep=-1;
	
	public void actionPerformed(ActionEvent e)
	{
		// TODO: Add your own implementation.		
			
			if(e.getSource()==m_btnNext)						
			{
				if(m_iStep==-1)
				{
					String str=m_tfData.getText ();
					if(str.length()>10)							
						str=str.substring (0,10);
					else if(str.length()<=1)
						str=m_sDefault;				
					m_tfData.setText (str);
					m_Demo.reset (str,m_bSortType);				
				}
				m_iStep=m_Demo.proceed (m_iStep);			
				m_tfData.setEnabled(m_iStep==-1);
				m_radio1.setEnabled(m_iStep==-1);
				m_radio2.setEnabled (m_iStep==-1);						
				showSource();			
			}			
			else if(e.getSource()==m_btnGo)
			{			
				if(m_bPaused)
				{
					if(m_iStep==-1)
					{
						String str=m_tfData.getText ();
						if(str.length()>10)					
							str=str.substring (0,10);
						else if(str.length()<=1)
							str=m_sDefault;
						m_tfData.setText (str.substring (0,10));					
						m_Demo.reset (str,m_bSortType);					
			
					}			
					if(m_btnNext.isEnabled ())
						m_btnNext.setEnabled (false);
					m_btnReset.setEnabled(false);								
					m_tfData.setEnabled (false);
					m_radio1.setEnabled (false);
					m_radio2.setEnabled (false);				
					m_btnGo.setLabel ("暂停执行");
					m_Go.resume ();
					m_bPaused=false;
				}
				else
				{
					m_Go.suspend ();
					
					m_bPaused=true;
					m_btnGo.setLabel ("连续执行");				
					m_btnNext.setEnabled (true);
					m_btnReset.setEnabled (true);				
					if(m_iStep==-1)
					{					
						m_tfData.setEnabled (true);
						m_radio1.setEnabled (true);
						m_radio2.setEnabled (true);
					}
				}				
			}
			else if(e.getSource()==m_btnReset)
				reset();	
			
	}
	public void itemStateChanged(ItemEvent e)
	{
		String name=(String)e.getItem ();		
		if(name=="正序")
		{
			if(e.getStateChange ()==e.SELECTED )
			{
				m_bSortType=true;
				setSource();
			}
			
		}
		else if(name=="逆序")
		{
			if(e.getStateChange()==e.SELECTED )
			{
				m_bSortType=false;
				setSource();				
			}
		}			
		showSource();
	}
	public void reset()
	{
		m_bSortType=true;
		m_bPaused=true;
		//m_sData=m_sDefault;
		m_tfData.setEnabled (true);		
		m_tfData.setText (m_sDefault);
		m_radio1.setEnabled (true);
		m_radio2.setEnabled (true);
		m_radio1.setState (m_bSortType);
		m_radio2.setState (!m_bSortType);
		m_iStep=-1;		
		showSource();		
		//Demo reset here 		
		m_Demo.reset (m_sDefault,m_bSortType);
		m_Go.stop();
		m_Go=new GoThread (this);
		m_Go.start ();
		//m_Go.stop ();
	//	m_Go.destroy();
	//	m_Go.start ();
		
	}
	public void setSource()
	{
		
		if(m_bSortType)
		{
			m_taSource.setText("");
			for(int i=0;i<sourceCode1.length ;i++)
			m_taSource.append (sourceCode1[i]+"\r\n");			
			
		}
		else
		{
			m_taSource.setText("");
			for(int i=0;i<sourceCode2.length ;i++)
			m_taSource.append (sourceCode2[i]+"\r\n");						
		}
	}
	
	
	private void addComponent(Component c,int column,int row,int width,int height)
	{
		m_gbConstraints.gridx = column;
		m_gbConstraints.gridy = row;
		m_gbConstraints.gridwidth = width;
		m_gbConstraints.gridheight = height;		
		m_gbLayout.setConstraints (c,m_gbConstraints);
		add(c);
	}
	
	public  void init()
	{
		m_bSortType=true;
		m_bPaused=true;
		m_iStep=-1;
		
		m_sData=m_sDefault;
		
		m_gbLayout = new GridBagLayout ();
		setLayout( m_gbLayout);
		m_gbConstraints = new GridBagConstraints ();
				
		m_taSource = new TextArea (15,50);
		m_taSource.setEditable (false);
		m_taSource.setBackground (Color.white );
		
		setSource();
		
		m_btnNext  = new Button ("执行下一句");
		m_btnReset = new Button ("重置环境");
		m_btnGo    = new Button ("连续执行");		
		m_btnNext.addActionListener (this);
		m_btnReset.addActionListener (this);
		m_btnGo.addActionListener (this);
		
		m_lbData   = new Label ("输入数据: ");
		m_lbSortType=new Label ("排序类型: ");
		
		m_radio1   = new Checkbox ("正序",m_Group,true);
		m_radio2   = new Checkbox ("逆序",m_Group,false);
		
		m_radio1.addItemListener (this);
		m_radio2.addItemListener (this);
		
		m_tfData =	new TextField(m_sDefault);		
		
		m_Demo = new Demo ();
		m_Demo.setSize(350,200);	
		
		addComponent(m_taSource,0,0,3,3);
		addComponent(m_Demo,3,0,4,1);		
		
		
		addComponent(m_btnReset,0,6,1,1);		
		addComponent(m_btnNext,1,6,1,1);
		
		addComponent(m_btnGo,2,6,1,1);
		
		m_gbConstraints.anchor =GridBagConstraints.WEST;
		addComponent(m_lbData,5,5,1,1);
		addComponent(m_tfData,6,5,1,1);
		
		
	
		addComponent(m_lbSortType,5,6,1,1);
		addComponent(m_radio1,6,6,1,1);		
		addComponent(m_radio2,6,7,1,1);				
		m_Demo.reset(m_sDefault,m_bSortType);		
		m_Go=new GoThread (this);
		m_Go.start ();
		
	}
	public void showSource()
	{
		int start=0;
		int end=0;
		if(m_iStep<=0)
			end+=sourceCode1[0].length ()+1;
		else
		{			
			for(int i=0;i<m_iStep;i++)
				start+=sourceCode1[i].length()+1;
			end=start+sourceCode1[m_iStep].length ()+1;
		}
		m_taSource.select (start,end);			
	}
	
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -