📄 gui.java
字号:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class gui extends WindowAdapter
implements ItemListener{
Frame mainframe,resultframe;
TextField statusbar;
Panel mainpanel,pc,pu,pd,p1,p2,p3,pw,pin,pind,
pan[]=new Panel[7],pan2[]=new Panel[7],pan3[]=new Panel[7],panbu,pancb,panchoice,repan[]=new Panel[7];
Button startb,resultb,quitb,allb,noneb,resetb;
Label l1,l2,l3,resultlabel[]=new Label[8];
CheckboxGroup cbg;
Checkbox one,two,three,cb[]=new Checkbox[8];
JProgressBar[] jpb=new JProgressBar[8];
Choice c;
long nu[]=new long[7];//记录排序时间的数组
static String[] name={"冒泡排序","Shell排序","插入排序","折半插入","快速排序","选择排序","堆排序法"},
tips={"a","b","c","d","e","f","g"};
public static void main(String args[])
{
try {
UIManager.setLookAndFeel("com.sun.java."+
"swing.plaf.windows.WindowsLookAndFeel");
} catch(Exception e) {
e.printStackTrace();
}//改变界面风格
gui g=new gui();
g.init();
}
public void init(){
mainframe=new Frame("programed by kokie");
mainframe.setSize(500,400);
mainframe.setBackground(Color.cyan);
mainframe.addWindowListener(this);
statusbar=new TextField("欢迎使用");
statusbar.setEditable(false);
mainframe.add(statusbar,"South");
pw=new Panel();
mainframe.add(pw,"North");
mainpanel=new Panel(new BorderLayout());
mainframe.add(mainpanel,"Center");
pc=new Panel(new GridLayout(1,3));
pu=new Panel(new GridLayout(1,3));
pd=new Panel();
mainpanel.add(pc,"Center");
mainpanel.add(pu,"North");
mainpanel.add(pd,"South");
p1=new Panel(new GridLayout(8,1));
p2=new Panel(new GridLayout(8,1));
p3=new Panel(new GridLayout(8,1));
pc.add(p1);
pc.add(p2);
pc.add(p3);
startb=new Button("开始排序");
startb.addMouseListener(new starthandle());
resetb=new Button("清零");
resetb.addMouseListener(new resethandle());
resultb=new Button("图形结果");
resultb.addMouseListener(new resulthandle());
quitb=new Button("退出");
quitb.addMouseListener(new quithandle());
pd.add(startb);
pd.add(resetb);
pd.add(resultb);
pd.add(quitb);
l1=new Label("选择排序算法",Label.CENTER);
l2=new Label("排序进度",Label.CENTER);
l3=new Label("结果(ms)",Label.CENTER);
pu.add(l1);
pu.add(l2);
pu.add(l3);
//////////////////////////////////////////////////////////
for(int i=0;i<7;i++){//添加7种可共选择的排序算法的复选框
pan[i]=new Panel();
cb[i]=new Checkbox(name[i],false);
pan[i].add(cb[i]);
p1.add(pan[i]);
}
panbu=new Panel();//添加全选和全部不选的快捷按钮
p1.add(panbu);
panbu.add(allb=new Button("全选"));
allb.addMouseListener(new allbhandle());
panbu.add(noneb=new Button("全部不选"));
noneb.addMouseListener(new nonebhandle());
////////////////////////////////////////////////////////////////
for(int i=0;i<7;i++){//添加相应的进度条指示
pan2[i]=new Panel();
jpb[i]=new JProgressBar(0,50);
jpb[i].setValue(0);
jpb[i].setStringPainted(true);
pan2[i].add(jpb[i]);
p2.add(pan2[i]);
}
cbg=new CheckboxGroup();
one=new Checkbox("正序",cbg,false);
one.addItemListener(this);
two=new Checkbox("逆序",cbg,false);
two.addItemListener(this);
three=new Checkbox("随机",cbg,true);//默认选择的排序方式是随机
three.addItemListener(this);
pancb=new Panel();
pancb.add(one);
pancb.add(two);
pancb.add(three);
p2.add(pancb);
/////////////////////////////////////////////////////////
for(int i=0;i<7;i++){//添加显示排序结果的label
pan3[i]=new Panel();
resultlabel[i]=new Label(" ",Label.CENTER);
pan3[i].add(resultlabel[i]);
p3.add(pan3[i]);
}
c=new Choice();//添加选择排序的数目
c.add("1000");
c.add("5000");
c.add("10000");
c.add("15000");
c.add("20000");
c.add("50000");
c.add("200000");
panchoice=new Panel();
p3.add(panchoice);
panchoice.add(c);
c.addItemListener(this);
mainframe.setVisible(true);
}
public void windowClosing(WindowEvent e){
//当前窗口被关的处理方法
System.exit(0);
}
public void itemStateChanged(ItemEvent e){
String st="你选择了对"+cbg.getSelectedCheckbox().getLabel()+"的"+c.getSelectedItem()+"个原始数据排序并计时";
statusbar.setText(st);
}
public class starthandle extends MouseAdapter{//开始按钮的事件处理方法
public void mouseExited(MouseEvent e){
//鼠标移开按钮后状态栏显示提示信息
statusbar.setText("鼠标移动到相应部分以获得提示信息");
}
public void mouseEntered(MouseEvent e){
//鼠标到按钮上时显示提示信息
statusbar.setText("按下会对所选排序对"+cbg.getSelectedCheckbox().getLabel()+"的"+c.getSelectedItem()+"个原始数据排序并计时");
}
public void mousePressed(MouseEvent e){
//鼠标点击按钮后开始排序
String seq=cbg.getSelectedCheckbox().getLabel();
int number=Integer.parseInt(c.getSelectedItem());
SortClass Sort=new SortClass(number,seq);
for(int i=0;i<7;i++)nu[i]=-1l;
if(cb[0].getState()){
jpb[0].setValue(0);
jpb[0].setIndeterminate(true);
resultlabel[0].setText(String.valueOf(nu[0]=Sort.BubbleSort())+"ms");
jpb[0].setValue(50);
jpb[0].setIndeterminate(false);
}
if(cb[1].getState()){
jpb[1].setValue(0);
jpb[1].setIndeterminate(true);
resultlabel[1].setText(String.valueOf(nu[1]=Sort.ShellSort())+"ms");
jpb[1].setValue(50);
jpb[1].setIndeterminate(false);
}
if(cb[2].getState()){
jpb[2].setValue(0);
jpb[2].setIndeterminate(true);
resultlabel[2].setText(String.valueOf(nu[2]=Sort.InsertSort())+"ms");
jpb[2].setValue(50);
jpb[2].setIndeterminate(false);
}
if(cb[3].getState()){
jpb[3].setValue(0);
jpb[3].setIndeterminate(true);
resultlabel[3].setText(String.valueOf(nu[3]=Sort.BInsertSort())+"ms");
jpb[3].setValue(50);
jpb[3].setIndeterminate(false);
}
if(cb[4].getState()){
jpb[4].setValue(0);
jpb[4].setIndeterminate(true);
resultlabel[4].setText(String.valueOf(nu[4]=Sort.QuickSort())+"ms");
jpb[4].setValue(50);
jpb[4].setIndeterminate(false);
}
if(cb[5].getState()){
jpb[5].setValue(0);
jpb[5].setIndeterminate(true);
resultlabel[5].setText(String.valueOf(nu[5]=Sort.SelectSort())+"ms");
jpb[5].setValue(50);
jpb[5].setIndeterminate(false);
}
if(cb[6].getState()){
jpb[6].setValue(0);
jpb[6].setIndeterminate(true);
resultlabel[6].setText(String.valueOf(nu[6]=Sort.HeapSort())+"ms");
jpb[6].setValue(50);
jpb[6].setIndeterminate(false);
}
}
}//end of class starthandle
public class resethandle extends starthandle{//清零按钮的事件处理
public void mouseEntered(MouseEvent e){
//鼠标到按钮上时显示提示信息
statusbar.setText("按下将清楚右边的排序结果");
}
public void mousePressed(MouseEvent e){
//鼠标点击按钮后清零
for(int i=0;i<7;i++){
resultlabel[i].setText(" ");
jpb[i].setValue(0);
}
}
}//end of class resethandle
public class resulthandle extends starthandle{//图形显示按钮的处理方法
public void mouseEntered(MouseEvent e){
//鼠标到按钮上时显示提示信息
statusbar.setText("按下以显示图形化的结果");
}
public void mousePressed(MouseEvent e){
//鼠标点击按钮后显示图形化结果
result re=new result(nu,Integer.parseInt(c.getSelectedItem()));
}
}//end of class resulthandle
public class quithandle extends starthandle{//退出按钮的事件处理方法
public void mouseEntered(MouseEvent e){
//鼠标到按钮上时显示提示信息
statusbar.setText("按下会退出程序");
}
public void mousePressed(MouseEvent e){
//鼠标点击按钮后开始排序
System.exit(0);
}
}//end of class quithandle
public class allbhandle extends starthandle{//全选按钮处理方法
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -