| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 755 人关注过本帖
标题:排序演示系统
只看楼主 加入收藏
chen610758171
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2008-11-14
收藏
 问题点数:0 回复次数:1 
排序演示系统
哪位高手把我的这个程序补全好吗!!!
package paixuyanshixitong;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class paixuyanshixitong extends JFrame{
private JLabel[]n;
 
private JTextField in;
private JTextField choice;
private JLabel select;
private JButton maopao;
private JButton kuaisu;
private JButton dui;
public paixuyanshixitong(){
this.getContentPane().setLayout(null);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setSize(500,300);
this.setLocationRelativeTo(null);
this.setResizable(false);
this.setAlwaysOnTop(true);

JLabel l = new JLabel("输入10组内数字:");
select=new JLabel("选择一种排序方法");
maopao=new JButton("2冒泡排序");
kuaisu=new JButton("1快速排序");
dui=new JButton("3堆排序");

l.setBounds(10,18,120,20);
add(l);
in=new JTextField("10,212,7,456,33,2,55,6,50,97");

in.setBounds(110,18,250,20);
add(in);

select.setBounds(20,130,150,30);
add(select);
maopao.setBounds(90,200,150,30);
add(maopao);
kuaisu.setBounds(90,160,150,30);
add(kuaisu);
dui.setBounds(90,240,150,30);

choice=new JTextField();
setTitle("排序演示");
kuaisu.addActionListener(new ActionListener()

{public void actionPerformed(ActionEvent e){sort1();}});
n=new JLabel[10];
for(int i=0; i<n.length; i++){
n[i]=new JLabel();
n[i].setFont(new Font("",Font.BOLD,14));
n[i].setForeground(Color.gray);
n[i].setHorizontalAlignment(JLabel.CENTER);
add(n[i]);
}
}
private void sort1(){

try{
String src = in.getText();
src=src.replaceAll("[^0-9,]","");
String[] sp = src.split(",");
final int[] v = new int[sp.length];
int left=0,w=40,offx=0,offy=95;
for(int i=0; i<n.length;i++)n[i].setText(null);
for(int i=0; i<sp.length; i++){
n[i].setText(sp[i]);
v[i] = Integer.valueOf(sp[i]);
n[i].setSize(w,20);
n[i].setLocation((left+=w)+offx,offy);
}
new Thread(){
public void run(){
kuaisu.setEnabled(false);
s(500);
try{
for(int i=0; i<n.length-1; i++){
if(v[i]>v[i+1]){
JLabel l=n[i];
n[i]=n[i+1];
n[i+1]=l;
n[i].setForeground(Color.blue);
for(int k=0; k<7; k++){
n[i].setVisible(k%2==0);
s(123);
}
swap(n[i],n[i+1]);
n[i].setForeground(Color.gray);
v[i]+=v[i+1];
v[i+1]=v[i]-v[i+1];
v[i]-=v[i+1];
i-=i==0?1:2;
}
}
}catch(Exception e){}
kuaisu.setEnabled(true);
}

                private void sort2() {
                    throw new UnsupportedOperationException("Not yet implemented");
                }

private void swap(JLabel a, JLabel b) {
JLabel t = a;
a=b;
b=t;
Point pa=a.getLocation();
Point pb=b.getLocation();
int x1,x2,y1,y2;
x1=pa.x;
x2=pb.x;
y1=pa.y;
y2=pb.y;
int delay=10;
while(x1<(x1+x2)/2){
a.setLocation(++x1,y1++);
b.setLocation(--x2,y2--);
s(delay);
}
while(x1<pb.x){
a.setLocation(++x1,y1--);
b.setLocation(--x2,y2++);
s(delay);
}
a.setLocation(pb);
b.setLocation(pa);
}
maopao.addActionListener(new ActionListener()
{ public void actionPerformed(ActionEvent e){sort2();}} );
private void s(int i) {
try {
sleep(i);
} catch (Exception e) {}
}
}.start();
}catch(Exception e){e.printStackTrace();setTitle("请检查输入的数据,只能输入10组哦");}
}
public static void main(String[] args) {
new paixuyanshixitong().setVisible(true);
}
}
搜索更多相关主题的帖子: 演示 系统 
2008-11-14 16:16
huangwei89
Rank: 1
等 级:新手上路
帖 子:127
专家分:0
注 册:2008-10-17
收藏
得分:0 
先看一下吧
2008-12-11 20:28
快速回复:排序演示系统
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.023105 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved