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

📄 gui.java

📁 用awt做界面的排序算法比较程序
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
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 + -