📄 applet1.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 + -