📄 guisort.java
字号:
package sort_source;
import java.awt.*;
import java.awt.event.*;
import javax.swing.border.BevelBorder;
import javax.swing.*;
public class GUISort extends JFrame {
/**
*
*/
private static final long serialVersionUID = 1L;
JTextField dataText, result,arraylen;
JButton resetButton;
JButton exitButton;
public static final int WIDTH = 300;
private int[] data;
public static final int HEIGHT = 220;
private int n;
public static void main(String[] args) {
new GUISort();
}
public GUISort() {
setTitle("排序算法演示"); //调用父类构造函数
setSize(WIDTH, HEIGHT);
setResizable(false);
setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE);
try
{ //设置外观
UIManager.setLookAndFeel(UIManager.getCrossPlatformLookAndFeelClassName());//getSystemLookAndFeelClassName());
}catch(Exception e){}
Container container = getContentPane(); //得到容器
JMenu menuTheme = new JMenu("排序算法"); //初始化菜单
/*String[] str = { "选择排序", "插入排序", "冒泡排序","快速排序", "归并排序", "堆排序"};
JMenuItem items[];
items=new JMenuItem[str.length];
for (int i = 0; i < items.length; i++)
{
items[i] = new JMenuItem(str[i]);
menuTheme.add(items[i]);
items[i].addActionListener(new ActionListener(){ //菜单项事件处理
public void actionPerformed(ActionEvent event){
sorting(str[i]); //调用方法,改变窗口风格
}
});
}
*/
JMenuItem itemSelection = new JMenuItem("选择排序");
JMenuItem itemInsert = new JMenuItem("插入排序");
JMenuItem itemBubble = new JMenuItem("冒泡排序");
JMenuItem itemQuick = new JMenuItem("快速排序");
JMenuItem itemMerge = new JMenuItem("归并排序");
JMenuItem itemHeap = new JMenuItem("堆排序");
// itemHeap.setBorder(new BevelBorder(BevelBorder.RAISED));
menuTheme.add(itemSelection);
menuTheme.add(itemInsert);
menuTheme.add(itemBubble);
menuTheme.add(itemQuick);
menuTheme.add(itemMerge);
menuTheme.add(itemHeap);
menuTheme.setBorder(new BevelBorder(BevelBorder.RAISED));
itemSelection.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent event) {
if (arraylen.getText().trim().equals(""))
JOptionPane.showMessageDialog(GUISort.this,"请输入要数列的长度!");
else if (dataText.getText().trim().equals(""))
JOptionPane.showMessageDialog(GUISort.this,"请输入要排序的数列!");
else
sorting("选择排序");
}
});
itemInsert.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent event) {
if (arraylen.getText().trim().equals(""))
JOptionPane.showMessageDialog(GUISort.this,"请输入要数列的长度!");
else if (dataText.getText().trim().equals(""))
JOptionPane.showMessageDialog(GUISort.this,"请输入要排序的数列!");
else
sorting("插入排序");
}
});
itemBubble.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent event) {
if (arraylen.getText().trim().equals(""))
JOptionPane.showMessageDialog(GUISort.this,"请输入要数列的长度!");
else if (dataText.getText().trim().equals(""))
JOptionPane.showMessageDialog(GUISort.this,"请输入要排序的数列!");
else
sorting("冒泡排序");
}
});
itemQuick.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent event) {
if (arraylen.getText().trim().equals(""))
JOptionPane.showMessageDialog(GUISort.this,"请输入要数列的长度!");
else if (dataText.getText().trim().equals(""))
JOptionPane.showMessageDialog(GUISort.this,"请输入要排序的数列!");
else
sorting("快速排序");
}
});
itemMerge.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent event) {
if (arraylen.getText().trim().equals(""))
JOptionPane.showMessageDialog(GUISort.this,"请输入要数列的长度!");
else if (dataText.getText().trim().equals(""))
JOptionPane.showMessageDialog(GUISort.this,"请输入要排序的数列!");
else
sorting("归并排序");
}
});
itemHeap.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent event) {
if (arraylen.getText().trim().equals(""))
JOptionPane.showMessageDialog(GUISort.this,"请输入要数列的长度!");
else if (dataText.getText().trim().equals(""))
JOptionPane.showMessageDialog(GUISort.this,"请输入要排序的数列!");
else
sorting("堆排序");
}
});
JMenuBar menuBar = new JMenuBar(); //初始化菜单栏
menuBar.add(menuTheme); //增加菜单到菜单栏
setJMenuBar(menuBar); //设置菜单
JPanel panel = new JPanel();
dataText = new JTextField(16);
result = new JTextField(16);
arraylen=new JTextField(16);
resetButton = new JButton("重置");
resetButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
arraylen.setText("");
dataText.setText("");
result.setText("");
}
});
exitButton = new JButton("退出");
exitButton.addActionListener(
new ActionListener() {
public void actionPerformed(ActionEvent evt) {
System.exit(0);
}
});
//panel.setBorder(BorderFactory.createTitledBorder("面向对象")); //设置边界
panel.setBorder(new BevelBorder(BevelBorder.RAISED));
JPanel jpanel = new JPanel();
jpanel.add(new JLabel("数字个数"));
// arraylen.setBorder(new BevelBorder(BevelBorder.LOWERED));
jpanel.add(arraylen);
jpanel.setBorder(new BevelBorder(BevelBorder.RAISED));
panel.add(jpanel);
jpanel=new JPanel();
jpanel.add(new JLabel("排序序列"));
// dataText.setBorder(new BevelBorder(BevelBorder.LOWERED));
jpanel.add(dataText);
jpanel.setBorder(new BevelBorder(BevelBorder.RAISED));
panel.add(jpanel);
jpanel = new JPanel();
jpanel.add(new JLabel("排序结果"));
// result.setBorder(new BevelBorder(BevelBorder.LOWERED));
jpanel.add(result);
jpanel.setBorder(new BevelBorder(BevelBorder.RAISED));
panel.add(jpanel);
panel.add(resetButton);
panel.add(exitButton);
container.add(panel);
setVisible(true); //设置窗口可见
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //关闭窗口时退出程序
Dimension screen = getToolkit().getScreenSize();
//pack();
setLocation((screen.width - getSize().width) / 2,
(screen.height - getSize().height) / 2);
}
public void sorting(String type) {
try {
String s = dataText.getText();
n=Integer.parseInt(arraylen.getText());
data= new int[n];
getData(s);
ChSort chsort=new ChSort();
if (type.equals("选择排序")) {
chsort.selection_sort(data);
display();
} else if (type.equals("插入排序")) {
chsort.insert_sort(data);
display();
} else if (type.equals("冒泡排序")) {
chsort.bubble_sort(data);
display();
} else if (type.equals("快速排序")) {
chsort.quick_sort(data);
display();
} else if (type.equals("归并排序")) {
chsort.merge_sort(data);
display();
} else if (type.equals("堆排序")) {
chsort.heap_sort(data);
display();
}
} catch (Exception ex) { //捕捉错误
ex.printStackTrace(); //输出错误
}
}
// 将用户所输入的字符串转化为整型数
public void getData(String str) {
//int n = 10;
str=str.trim();
int[] index = new int[n - 1];
index[0] = str.indexOf(",");
for (int i = 1; i < n - 1; i++) {
index[i] = str.indexOf(",", index[i - 1] + 1);
}
data[0] = Integer.parseInt(str.substring(0, index[0]));
for (int i = 1; i < n - 1; i++) {
data[i]=Integer.parseInt(str.substring(index[i-1]+1, index[i]));
}
data[n - 1] = Integer.parseInt(str.substring(index[n - 2] + 1));
}
public void display(){
String s1 = "";
for (int i = 0; i < n; i++) {
s1 = s1 + data[i] + " ";
}
result.setText(s1);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -