java怎么画动态算法过程演示图_Java GUI : 实现排序算法的动态演示

本文展示了一个使用Java GUI创建的动态算法过程演示系统,能够动态演示快速排序、冒泡排序和希尔排序的过程。用户可以调整速度,并通过按钮控制排序动画的开始、暂停、前进和后退。
摘要由CSDN通过智能技术生成

packagecom.edusys.ui;importjava.awt.Dimension;importjava.awt.Font;importjava.awt.Toolkit;importjava.awt.event.ActionEvent;importjava.awt.event.ActionListener;importjava.util.List;importjavax.swing.ButtonGroup;importjavax.swing.JButton;importjavax.swing.JFrame;importjavax.swing.JLabel;importjavax.swing.JOptionPane;importjavax.swing.JPanel;importjavax.swing.JPasswordField;importjavax.swing.JRadioButton;importjavax.swing.JScrollPane;importjavax.swing.JSlider;importjavax.swing.JTable;importjavax.swing.JTextArea;importjavax.swing.JTextField;importjavax.swing.ScrollPaneConstants;importjavax.swing.event.ChangeEvent;importjavax.swing.event.ChangeListener;importcom.edusys.utils.FileUtils;importcom.edusys.utils.HistogramUtils;importcom.edusys.utils.SortEntity;importcom.edusys.utils.SortUtils;importcom.edusys.utils.TimeUtils;public classMainUI {private static int sort_type=0;private static int speed=1;private static int sleeptime=100;private static int count=0;private static boolean play_flag=false;private static boolean start_flag=false;private static ListsortList;public static voidmain(String[] args) {

MainUI.animation();

}/*** 算法动画演示*/

public static voidanimation(){final JFrame frame=newJFrame();

frame.setSize(1000,620);

frame.setVisible(true);

frame.setResizable(false);

frame.setLocation((Toolkit.getDefaultToolkit().getScreenSize().width-1000)/2,

(Toolkit.getDefaultToolkit().getScreenSize().height-620)/2);

frame.setTitle("Algorithm Teaching System");

frame.setLayout(null);

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

sleeptime=100/speed;final SortUtils sortUtils=newSortUtils();if(sort_type==0){

sortList=sortUtils.getQuickList();

}else if(sort_type==1){

sortList=sortUtils.getBubbleList();

}else{

sortList=sortUtils.getShellList();

}int len=sortList.size();

JPanel jPanel_sort=newJPanel();

HistogramUtils histogramUtils=newHistogramUtils(sortList.get(count));

jPanel_sort=histogramUtils.createPanel();

frame.add(jPanel_sort);

jPanel_sort.setBounds(0, 0, 450, 600);

JLabel jLabel_title=new JLabel("Sort Algorithm");

frame.add(jLabel_title);

jLabel_title.setBounds(500, 20, 120, 30);

JRadioButton jRadioButton_quick=new JRadioButton("Qucik Sort");

frame.add(jRadioButton_quick);if(sort_type==0){

jRadioButton_quick.setSelected(true);

}

jRadioButton_quick.setBounds(500, 50, 120, 30);

jRadioButton_quick.addActionListener(newActionListener() {

@Overridepublic voidactionPerformed(ActionEvent e) {

sort_type=0;

frame.dispose();

MainUI.animation();

}

});

JRadioButton jRadioButton_bubble=new JRadioButton("Bubble Sort");

frame.add(jRadioButton_bubble);

jRadioButton_bubble.setBounds(500, 80, 120, 30);if(sort_type==1){

jRadioButton_bubble.setSelected(true);

}

jRadioButton_bubble.addActionListener(newActionListener() {

@Overridepublic voidactionPerformed(ActionEvent e) {

sort_type=1;

frame.dispose();

MainUI.animation();

}

});

JRadioButton jRadioButton_shell=new JRadioButton("Shell Sort");

frame.add(jRadioButton_shell);

jRadioButton_shell.setBounds(500, 110, 120, 30);if(sort_type==2){

jRadioButton_shell.setSelected(true);

}

jRadioButton_shell.addActionListener(newActionListener() {

@Overridepublic voidactionPerformed(ActionEvent e) {

sort_type=2;

frame.dispose();

MainUI.animation();

}

});

ButtonGroup buttonGroup_sort=newButtonGroup();

buttonGroup_sort.add(jRadioButton_shell);

buttonGroup_sort.add(jRadioButton_bubble);

buttonGroup_sort.add(jRadioButton_quick);

JLabel jLabel_speed=new JLabel("Speed");

frame.add(jLabel_speed);

jLabel_speed.setBounds(620, 160, 120, 30);

JSlider jSlider_speed= new JSlider(1, 5, 1);

frame.add(jSlider_speed);

jSlider_speed.setBounds(500, 190, 300, 40);

jSlider_speed.setMajorTickSpacing(1);

jSlider_speed.setPaintTicks(true);

jSlider_speed.setPaintLabels(true);

jSlider_speed.addChangeListener(newChangeListener() {

@Overridepublic voidstateChanged(ChangeEvent e) {

speed=jSlider_speed.getValue();

sleeptime=100/speed;

}

});

JButton jButton_start=new JButton("Start");

frame.add(jButton_start);

jButton_start.setBounds(500, 320, 80, 30);

jButton_start.addActionListener(newActionListener() {

@Overridepublic voidactionPerformed(ActionEvent e) {

start_flag=true;newThread(){

@Overridepublic voidrun(){while (count

try{

Thread.sleep(sleeptime);

}catch(InterruptedException e1) {

e1.printStackTrace();

}

JPanel jPanel_sort=newJPanel();

HistogramUtils histogramUtils=newHistogramUtils(sortList.get(count));

jPanel_sort=histogramUtils.createPanel();

frame.add(jPanel_sort);

jPanel_sort.setBounds(0, 0, 450, 600);

count++;

}

}

}.start();

jButton_start.setEnabled(false);

}

});

JButton jButton_restart=new JButton("Restart");

frame.add(jButton_restart);

jButton_restart.setBounds(600, 320, 80, 30);

jButton_restart.addActionListener(newActionListener() {

@Overridepublic voidactionPerformed(ActionEvent e) {

frame.dispose();

MainUI.animation();

}

});

JButton jButton_pause=new JButton("Pause");

frame.add(jButton_pause);

jButton_pause.setBounds(700, 320, 80, 30);

jButton_pause.addActionListener(newActionListener() {

@Overridepublic voidactionPerformed(ActionEvent e) {if(!play_flag){

start_flag=false;

jButton_pause.setText("Play");

play_flag=true;

}else{

start_flag=true;

jButton_pause.setText("Pause");

play_flag=false;newThread(){

@Overridepublic voidrun(){while (count

try{

Thread.sleep(sleeptime);

}catch(InterruptedException e1) {

e1.printStackTrace();

}

JPanel jPanel_sort=newJPanel();

HistogramUtils histogramUtils=newHistogramUtils(sortList.get(count));

jPanel_sort=histogramUtils.createPanel();

frame.add(jPanel_sort);

jPanel_sort.setBounds(0, 0, 450, 600);

count++;

}

}

}.start();

}

}

});

JButton jButton_forward=new JButton("Forward");

frame.add(jButton_forward);

jButton_forward.setBounds(800, 320, 80, 30);

jButton_forward.addActionListener(newActionListener() {

@Overridepublic voidactionPerformed(ActionEvent e) {if(count

count++;

JPanel jPanel_sort=newJPanel();

HistogramUtils histogramUtils=newHistogramUtils(sortList.get(count));

jPanel_sort=histogramUtils.createPanel();

frame.add(jPanel_sort);

jPanel_sort.setBounds(0, 0, 450, 600);

}

}

});

JButton jButton_back=new JButton("Back");

frame.add(jButton_back);

jButton_back.setBounds(900, 320, 80, 30);

jButton_back.addActionListener(newActionListener() {

@Overridepublic voidactionPerformed(ActionEvent e) {if(count>0){

count--;

JPanel jPanel_sort=newJPanel();

HistogramUtils histogramUtils=newHistogramUtils(sortList.get(count));

jPanel_sort=histogramUtils.createPanel();

frame.add(jPanel_sort);

jPanel_sort.setBounds(0, 0, 450, 600);

}

}

});

JButton jButton_back2menu=new JButton("Back To Menu");

frame.add(jButton_back2menu);

jButton_back2menu.setBounds(700, 360, 120, 30);

jButton_back2menu.addActionListener(newActionListener() {

@Overridepublic voidactionPerformed(ActionEvent e) {

frame.dispose();

MainUI.explanation();

}

});newThread(){

@Overridepublic voidrun(){while (count

try{

Thread.sleep(sleeptime);

}catch(InterruptedException e1) {

e1.printStackTrace();

}

JPanel jPanel_sort=newJPanel();

HistogramUtils histogramUtils=newHistogramUtils(sortList.get(count));

jPanel_sort=histogramUtils.createPanel();

frame.add(jPanel_sort);

jPanel_sort.setBounds(0, 0, 450, 600);

count++;

}

}

}.start();

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值